加密我試圖在C++中解密一個文件。此文件進行加密,下面的命令:在C++中解密文件,用openssl -aes-128-cbc
openssl enc -nosalt -aes-128-cbc -pass pass:test -in "test.txt" -out "test_enc.txt" -p
該控制檯顯示key=098F6BCD4621D373CADE4E832627B4F6
和iv=0A9172716AE6428409885B8B829CCB05
。
在C++中我已經包括#include openssl/aes.h
線,並嘗試用下面的代碼進行解密:
const char *indata = string.toAscii().constData();
unsigned char outdata[strlen(indata)];
unsigned char ckey[] = "098F6BCD4621D373CADE4E832627B4F6";
unsigned char ivec[] = "0A9172716AE6428409885B8B829CCB05";
/* data structure that contains the key itself */
AES_KEY key;
/* set the encryption key */
AES_set_decrypt_key(ckey, 256, &key);
AES_cbc_encrypt((unsigned char*) indata, outdata, strlen(indata), &key, ivec, AES_DECRYPT);
QString result = QString((const char*) outdata);
return result;
可變outdata包含比使用OpenSSL加密之前不同的值。
您實際上沒有問過任何問題。 – benjymous
現在的問題是:爲什麼AES_cbc_encrypt的輸出與以前的openssl enc的輸入不同?爲什麼加密前的內容與解密後的內容不一致? – user2932510