0

我用 Blowfish 编码做了一些测试,并注意到了一些东西。编码字符串并不总是与源字符串一样长。有时更短。

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

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

这里的问题是我没有length_to_decode如果我不知道源字符串的长度。如果我使用解码字符串的长度作为 length_to_decode 那么这可能太短了。

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

在互联网上的所有示例代码中,编码和解码总是发生在一个函数中,并且解码示例使用硬编码长度进行解码。但在现实生活中我不知道编码字符串的长度,然后呢?

这是一个例子:

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);
4

1 回答 1

5

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

于 2011-08-16T13:40:39.713 回答