我在网上找到了关于如何在php中加密字符串的教程,但是当我调用该函数并尝试回显处理过的数据时,我得到500内部错误。以下是我的代码。
<?php
$iv_to_pass_to_decryption = 'mysecretpass';
function encrypt($text, $key)
{
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC), MCRYPT_RAND);
$iv_to_pass_to_decryption = base64_encode($iv);
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $iv);
}
function decrypt($text, $key, $iv)
{
$text = base64_decode($text);
$iv = base64_decode($iv);
return mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $iv);
}
$txt = "hello";
$mykey = "mysecretkey";
$somedata = encrypt($txt, $mykey);
echo $somedata;
?>
答案 0 :(得分:0)
第一个问题是,你错过了第8行的)
。
第二个问题是mcrypt_decrypt()
函数已被弃用。
第三个问题是mcrypt_encrypt():
此算法不支持大小为11的密钥。仅支持尺寸为16,24或32的按键。 &#39; mysecretkey&#39;关键是错误的。
我建议您使用crypt()
功能:http://php.net/manual/en/function.crypt.php
验证密码时,字符串比较功能不是 应该用易受时间攻击来比较输出 crypt()到先前已知的哈希。 PHP 5.6以上提供 hash_equals()就此而言。
答案 1 :(得分:-2)
使用下面的代码希望它能帮到你
$iv_to_pass_to_decryption = 'mysecretpass';
function encrypt($text, $key)
{
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC), MCRYPT_RAND);
$iv_to_pass_to_decryption = base64_encode($iv);
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $iv));
}
function decrypt($text, $key, $iv)
{
$text = base64_decode($text);
$iv = base64_decode($iv);
return mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $iv);
}
$txt = "hello";
$mykey = "mysecretkey12345";
$somedata = encrypt($txt, $mykey);
echo $somedata;