2014-01-17 2 views
2

방금 ​​openssl C 라이브러리의 복어 알고리즘을 사용하여 일부 암호화/해독을 시도하고 이상한 오류가 발생했습니다. 해독 된 메시지의 처음 64 비트가 어찌 되었든 엉망입니다.Blowfish crypto가 암호화 및 해독 중에 처음 8 바이트를 엉망으로 만듭니다.

내가 뭘 잘못하고 있니?

#include <openssl/blowfish.h> 
#include <cstring> 
#include <cstdio> 

int main() 
{ 
    unsigned char rawKey[] = "password"; 

    BF_KEY key; 
    BF_set_key(&key, strlen((char*) rawKey), rawKey); 

    unsigned char msg[] = "Lorem ipsum dolor sit amet"; 

    unsigned char enc[64]; 
    memset(enc, 0, 64); 
    unsigned char ivec[8]; 
    memset(ivec, 0, 8); 

    BF_cbc_encrypt(msg, enc, strlen((char*) msg) + 1, &key, ivec, 
     BF_ENCRYPT); 

    unsigned char dec[64]; 

    BF_cbc_encrypt(enc, dec, strlen((char*) msg) + 1, &key, ivec, 
     BF_DECRYPT); 

    printf("%s\n", dec); 

    return 0; 
} 

출력은 :

.,�s�Ksum dolor sit amet 

0x7fffffffde20: 46 '.' 3 '\003' 23 '\027' 44 ',' -102 '\232' 115 's' -2 '\376' 75 'K' 
0x7fffffffde28: 115 's' 117 'u' 109 'm' 32 ' ' 100 'd' 111 'o' 108 'l' 111 'o' 
0x7fffffffde30: 114 'r' 32 ' ' 115 's' 105 'i' 116 't' 32 ' ' 97 'a' 109 'm' 
0x7fffffffde38: 101 'e' 116 't' 0 '\000' 

감사 미리 : D 여기서

는 코드!

답변

1

BF_cbc_encrypt 전에 memset (ivec, 0, 8)을 시도하십시오. BF_cbc_encrypt가 변경 될 수 있습니다.

+0

그게 전부 야, 고마워. :) – LocalToast