mcrypt_encrypt(): 大小键

mcrypt_encrypt(): Key of size

mcrypt_encrypt(): 此算法不支持大小为 10 的密钥。仅支持大小为 16、24 或 32 的键!

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

我该如何解决这个问题?

以前如果您的密钥太短 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字节的key,因为bc是一个字节,b0是另一个,等等。来自http://php.net/manual/en/function.mcrypt-encrypt.php

您可以使用 strlen() 仔细检查字节数。从上面的例子 strlen($key) 将打印出 32.