答案 0 :(得分:6)
如果你的密钥太短,PHP会用\ 0来填充它。自PHP 5.6.0以来不再是这种情况。您应该检查所使用的密码所需的密钥大小:http://php.net/manual/en/function.mcrypt-get-key-size.php注意还有其他方法可以检查密钥大小,请查看文档。简单的方法我理解密钥大小:ASCII中的'fubar'字符串是5 * 8 = 40字节(每个字符8个字节)。但是这正在对使用中的字符集做出假设。 php.net上的一些评论更好地解释了如何滚动正确大小的密钥:
$ key = pack('H *',“bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3”);
这里64字符串将被转换为32字节密钥,因为bc是一个字节,b0是另一个,等等。来自http://php.net/manual/en/function.mcrypt-encrypt.php
您可以使用strlen()仔细检查字节数。从上面的示例中,strlen($ key)将打印出32。