我有这些代码用于加密和解密。
它适用于文本(例如:“这是一个文本”),它没有变音符号(这意味着没有:ěščřžýáíéúů)。 但是我需要用这个特殊字母加密和解密文本(用:ěščřžýáíéú......)。
有人可以帮帮我吗?
非常感谢每一个答案和帮助。
祝你有个愉快的一天。微米。
define ("ENCRYPTION_KEY", "QaY7e4d1c");
$string= "This is a text"; // -> this work alright
//$string= "áýžřčšě"; I NEED THIS TEXT ENCRYPT AND DECRTYPT
echo $encrypted = encrypt($string, ENCRYPTION_KEY);
echo "<br />";
echo $decrypted = decrypt($encrypted, ENCRYPTION_KEY);
function encrypt ($pure_string,$encryption_key)
{
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH,MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size,MCRYPT_RAND);
$encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH,$encryption_key,utf8_encode($pure_string),MCRYPT_MODE_ECB,$iv);
return $encrypted_string;
}
function decrypt ($encrypted_string,$encryption_key)
{
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH,MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size,MCRYPT_RAND);
$decrypted_string = mcrypt_decrypt(MCRYPT_BLOWFISH,$encryption_key,$encrypted_string,MCRYPT_MODE_ECB ,$iv);
return $decrypted_string;
}
答案 0 :(得分:1)
您在加密功能中呼叫utf8_encode
,但在解密时不会呼叫utf8_decode
,因此您的功能不会相互补充。
我建议完全删除对utf8_encode
的呼叫。 mcrypt_encrypt
并不关心你的字符串使用什么编码,所以无论你传递什么,都会得到你的回报。如果我删除它,你的脚本对我来说很好:
$encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH, $encryption_key, $pure_string, MCRYPT_MODE_ECB, $iv);
我还建议您阅读:https://paragonie.com/blog/2015/05/if-you-re-typing-word-mcrypt-into-your-code-you-re-doing-it-wrong