※ 引述《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