mcrypt_encrypt():大小的关键

时间:2015-06-29 21:05:08

标签: php laravel encryption mcrypt

mcrypt_encrypt():此算法不支持10号密钥。只支持尺寸为16,24或32的按键!

http://i.stack.imgur.com/qE1ZD.png

我该如何解决这个问题?

1 个答案:

答案 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。