我正在使用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));
请注意,如果密钥是随机的,它不会解密,只要它是正确的密钥或它的第一个字节。
发生什么事了?!
感谢您的帮助。