Php mcrypt_get_block_size():模块初始化失败-函数出错

Php mcrypt_get_block_size():模块初始化失败-函数出错,php,mcrypt,Php,Mcrypt,我正在尝试创建一个可以加密字符串的函数。我有以下代码,但我得到一个错误 $key=“testkey”; //这是执行加密的函数。把它当作一个黑盒子。不要编辑! 函数加密($str,$key){ $block=mcrypt_get_block_size('ISO-8859-1','ecb'); $pad=$block-(strlen($str)%$block); $str.=str_重复(chr($pad),$pad); 返回base64_encode(mcrypt_encrypt(mcrypt_

我正在尝试创建一个可以加密字符串的函数。我有以下代码,但我得到一个错误

$key=“testkey”;
//这是执行加密的函数。把它当作一个黑盒子。不要编辑!
函数加密($str,$key){
$block=mcrypt_get_block_size('ISO-8859-1','ecb');
$pad=$block-(strlen($str)%$block);
$str.=str_重复(chr($pad),$pad);
返回base64_encode(mcrypt_encrypt(mcrypt_RIJNDAEL_128,$key,$str,mcrypt_MODE_ECB));
}
//调用encrypt函数并向其发送要加密的密钥和数据。将返回的数据存储在$dataopt变量中。
$dataopt=encrypt($rawstring,$key)

错误为“mcrypt_get_block_size():第41行的模块初始化失败”,即$block=mcrypt_get_block_size('ISO-8859-1','ecb')


有什么想法吗?

您正在将
'ISO-8859-1'
作为第一个参数传递给
mcrypt\u get\u block\u size

您可能打算将
MCRYPT_RIJNDAEL_128
作为第一个参数传递


请注意,mcrypt已被弃用,因此您可能应该研究其他解决方案。看看有没有其他选择。

Hi Oz。谢谢回复。我已经用MCRYPT_RIJNDAEL_128替换了
ISO-8859-1
,但是我得到了错误“警告:MCRYPT_encrypt():此算法不支持大小为7的密钥。第44行中只支持大小为16、24或32的密钥,这与返回base64_encode相关(MCRYPT_encrypt(MCRYPT_RIJNDAEL_128,$Key,$str,MCRYPT_MODE_ECB));谢谢你的帮助help@deanhodges如果答案有帮助,请接受它。正如我提到的,我强烈建议您根本不要使用
mcrypt
。您的错误是您需要一个二进制密钥,并且正在传入一个字符串(请参阅)。mcrypt的级别非常低,即使一切看起来都很好,也很容易在概念上出错。我不知道你为什么要特别尝试加密字符串,但有一个比mcrypt更好的解决方案,几乎可以满足任何需要。