Шифрование Blowfish портит первые 8 байтов во время шифрования и дешифрования

Я только что попробовал некоторую расшифровку / расшифровку с алгоритмом blowfish библиотек openssl c и столкнулся с странной ошибкой: первые 64 бита дешифрованного сообщения как-то испортились.

Что я делаю неправильно?

Вот код:

#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'

Заранее спасибо !

2

Решение

Попробуйте memset (ivec, 0, 8) перед BF_cbc_encrypt.
BF_cbc_encrypt может изменить его.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector