我正在使用函数对某些文本进行编码和解码, 但似乎它不支持我的国家语言(波斯语)并将它们更改为一些不可读的文本,我该如何修复它。
<?php
class encrypt {
/********* Encode *********/
public static function encode($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, md5(base64_encode(trim($encryption_key))), utf8_encode(trim($pure_string)), MCRYPT_MODE_ECB, $iv);
return base64_encode($encrypted_string);
}
/********** Decode ************ */
public static function decode($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, md5(base64_encode(trim($encryption_key))),base64_decode(trim($encrypted_string)), MCRYPT_MODE_ECB, $iv);
return $decrypted_string;
}
}
?>
答案 0 :(得分:0)
同样的IV需要用于加密和解密,一般的方法是在加密数据前加上IV,以便在解密过程中使用。
无需对Base64进行编码或修剪加密密钥。
不要修剪加密数据,加密数据可以包含空(0x00)字节。
加密操作的是字节,而不是字符,因此任何文本语言都没有区别。
将调用内联添加到其他调用只会使调试更加困难,将步骤分成带有中间变量的单独语句。
不要使用Blowfish,使用AES,即使是Blowfish的创建者也使用AES。
不要使用ECB模式,不安全,请参阅ECB模式,向下滚动到企鹅。
ECB模式不使用IV。
您正在做的是加密,而不是编码。