Доброго времени суток всем. Необходимо зашифровать данные алгоритмом Blowfish (да и расшифровать тоже). Юзаю OpenSSL. Вот функция, отвечающая за кодирование:
String crypto::encrypt(const String& data, const String& key){
int datalen=data.length()+1, keylen=key.length()+1;
BF_KEY bf_key;
BF_set_key(&bf_key, keylen, (const unsigned char*)key.c_str());
char *encrypted_data=new char[datalen];
unsigned char iv[8];
memset(iv, 0, sizeof(iv));
BF_cbc_encrypt((const unsigned char*)data.c_str(), (unsigned char*)encrypted_data, datalen, &bf_key, iv, BF_ENCRYPT);
String result(encrypted_data);
delete[] encrypted_data;
return result;
}
String - это класс-наследник от string из <string>. Алгоритм Blowfish работает с ключом в 16 байт и размером блока данных 8 байт. Функция работает нормально для данных в 8 байт. Для данных в 22568 байт кодируются лишь первые 158 байт, что остальные не кодируются. с декодированием тоже самое. Если кто-либо имеет опыт в openssl/blowfish просьба откликнуться. Спасибо.
Ответ на:
комментарий
от mannaz
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум STL и аллокация памяти, Linux 2.4.22, g++ 3.2.2 (2004)