看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《rtt2008 (rtt)》之銘言: : 小弟利用AES作字串加解密,在windows和Linux測試成功 : 但是,跨平台卻無法正確解密,附上source code,麻煩各位大大給小弟一些可能的問題 : Encrypt in Windows: : aes_context ctx; : char *rawData = "Hello world!"; : char *secret_key = "SECRET_KEY"; : unsigned char buf[16]; : unsigned char key[32]; : memset(buf,0,16); : memset(key,0,32); : memcpy( buf, rawData, 16); : /* Set the key */ : memcpy( key, secret_key, 32); : aes_set_key( &ctx, key, 128); : /* Encrypt and save to file */ : aes_encrypt( &ctx, buf, buf ); : FILE *fp; : fp = fopen("SSL", "wb+"); : fwrite(buf,1,16,fp); : fclose(fp); : Decrypt in Linux : aes_context ctx; : char *decryptData; : char *secret_key = "SECRET_KEY "; : unsigned char buf[16]; : unsigned char key[32]; : memset(buf,0,16); : memset(key,0,32); : /* Set the key */ : memcpy( key, secret_key, 32); : aes_set_key( &ctx, key, 128); : /* Decrypt from file*/ : FILE *fp; : fp = fopen("SSL", "rb+"); : fread(buf, 1, 16, fp); : fclose(fp); : aes_decrypt( &ctx,buf,buf); : decryptData = (char*)buf; : cout<<decryptData<<endl; 既然加解密在單一環境下都可以正常運作 你有去檢查到底是哪裡的問題嗎 ? 先去找一份正確的明文, 祕文當作標準 (第三方資料) 同一篇明文在 linux & Windos 下加密出來的秘文一不一樣 同一篇祕文在 linux & Windows 下解出來的一不一樣 先確定是加密出問題, 還是解密出問題 也可以順便確認是 linux 部分有問題, 還是 Windows 部分有問題 這個 "基本動作" 做完, 還找不到問題, 才值得研究 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.105.226