用diacrits加密和解密

时间:2016-09-22 10:10:31

标签: php encryption cryptography

我有这些代码用于加密和解密。

enter image description here

它适用于文本(例如:“这是一个文本”),它没有变音符号(这意味着没有:ěščřžýáíéúů)。 但是我需要用这个特殊字母加密和解密文本(用:ěščřžýáíéú......)。

有人可以帮帮我吗?

非常感谢每一个答案和帮助。

祝你有个愉快的一天。微米。

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;
}

1 个答案:

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