Blowfish仅使用密钥的第一个字符加密/解密

时间:2011-06-20 08:28:57

标签: c++ blowfish

我正在使用Bruce Schneier的源代码使用Blowfish加密一些数据。这一切似乎都运行良好,除了我注意到当我用8字节密钥加密时,它可以用该8字节密钥的第一个字符解密(例如用密钥“abcdefgh”加密,并且可以用“a”解密) )。

以下是我的代码中的一些摘录:

初始化河豚:

char key[] = "abcdefgh";
InitializeBlowfish(key, 1);

然后我将输入以8字节块存储到两个联合中,每个联合有四个字符和一个无符号长。

然后我加密:

Blowfish_encipher(&(xl.l), &(xr.l));

其中xl.l和xr.l是我的两个联合xl和xr中的无符号长整数。

要解密:

Blowfish_decipher(&(xl.l), &(xr.l));

请注意,如果密钥是随机的,它不会解密,只要它是正确的密钥或它的第一个字节。

发生什么事了?!

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

我可以找到的关于blowfish的

Links to源代码往往表明InitializeBlowfish函数的定义类似于:

int InitializeBlowfish(char *key, size_t len)

可以使用e.g.调用:

InitializeBlowfish(key_string_blowfish, strlen(key_string_blowfish));

而不是在您的情况下,您指示密钥长度为1。