2
我工作在Ubuntu 14.10,我試圖讓用C和OpenSSL相同的輸出,我會得到使用下面的命令:Ç - OpenSSL的帶有AES-256和CFB模式
openssl enc -aes-256-cfb8 -in test -out test.enc -K $key -iv $iv
我一直在這兩天工作,但沒有得到它,加密工作,但它不是我應該得到的。
我的代碼是:
int outlen, inlen;
unsigned char inbuf[BUFSIZE] , outbuf[BUFSIZE];
strcpy(inbuf,text);
EVP_CIPHER_CTX ctx;
EVP_CIPHER_CTX_init(&ctx);
EVP_EncryptInit_ex(&ctx, EVP_aes_256_cfb8(), NULL, key, iv);
int i =0;
int n = strlen(text);
for(i; i < n; i++) {
if(!EVP_EncryptUpdate(&ctx, outbuf, &outlen, inbuf, 1))
return 0;
}
if(!EVP_EncryptFinal(&ctx, outbuf, &outlen))
return 0;
EVP_CIPHER_CTX_cleanup(&ctx); P_EncryptFinal(&ctx, outbuf, &outlen))
return 0;
EVP_CIPHER_CTX_cleanup(&ctx); i < n; i++) {
if(!EVP_EncryptUpdate(&ctx, outbuf, &outlen, inbuf, 1))
return 0;
}
if(!EVP_EncryptFinal(&ctx, outbuf, &outlen))
return 0;
EVP_CIPHER_CTX_cleanup(&ctx);
謝謝!
它的工作!而且我也能夠根據那個進行解密。但我不瞭解關於bufsize的一些事情。使用bufsize = 256它不適用於像「abcdefghijklm」這樣的其他字符串,我不得不將它增加到512,那麼什麼是bufsize表示,我應該如何選擇它的大小?是否有可能在執行時根據要編碼的文本來確定它? – ur3k 2015-03-25 15:09:00
更新 - 我不確定我做錯了什麼,但現在所有的工作都是正確的bufsize,我會說它是我的初始和最終字符串將會有的「元素」的數量。 – ur3k 2015-03-25 18:33:59