我对Blowfish编码进行了一些测试,发现了一些东西。编码的字符串并不总是与源字符串一样长。有时会更短。

如果我想解码编码的字符串,我需要在openssl函数中解码的长度:

BF_cfb64_encrypt(encoded_input,decoded_output,length_to_decode,&key,iv,&num,BF_DECRYPT);


这里的问题是,如果我不知道源字符串的长度,则我没有length_to_decode。如果我将解码后的字符串的长度用作length_to_decode,则可能太短。

如果我使用更大的长度,则解码后的字符串不正确。所以我需要知道用河豚编码解码的长度吗?

在所有示例代码中,Internet上的编码和解码始终只在一种功能中进行,而解码示例使用硬编码长度进行解码。但是在现实生活中,我不知道编码字符串的长度,然后呢?

这是一个例子:

source string:    sdcfgssssssss
source length:    13
encryption key:   s
encrypted output: :‹(
encrypted length: 4


我这样初始化我的密钥:

BF_KEY key;
const char * keyStr = "s";
BF_set_key(&key, strlen(keyStr), (const unsigned char *)keyStr);

最佳答案

输出的长度与输入的长度相同。请注意,输出数据可能包含NUL字符,因此您不应在数据上使用strlen

关于c++ - Blowfish加密后字符串长度不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7078255/

10-11 22:33
查看更多