PHP AES 256 加密奇怪的字符
Posted
技术标签:
【中文标题】PHP AES 256 加密奇怪的字符【英文标题】:PHP AES 256 encrypt weird characters 【发布时间】:2013-04-06 05:24:27 【问题描述】:我有以下加密代码:
function encryptData($value)
$key = "7685647tfyr65413285746352413sgfh";
$text = $value;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
return $crypttext;
echo 'Encrpt: ' . encryptData('This is just a test');
输出为:Encrpt: yUB�F3�*ľ�G-�ۅd�8�f�_�X/O
我将把它放到一个 mysql 数据库中,但不确定它是否会接受那些奇怪的字符类型?
我这样做对吗?
【问题讨论】:
base64_encode 并在发送到数据库之前添加斜杠 那些不是字符。这是您的输出方法无法表示的二进制数据。它可以以这种方式存储在接受二进制数据的列中,或者您可以通过base64_encode()
将其编码为 ascii。
【参考方案1】:
是的,你做对了,但是输出是一个二进制值。为了保存,最好通过
将其编码为“常规”字符串$encrypted_base64 = base64_encode($crypttext);
只记得在解码之前做相反;
$crypttext = base64_decode($encrypted_base64);
【讨论】:
是的,这应该可以解决问题,试试吧:) 但也一定要以同样的方式修改你的 decrypt 方法(如上所述)以上是关于PHP AES 256 加密奇怪的字符的主要内容,如果未能解决你的问题,请参考以下文章
不能 AES_DECRYPT (MySQL) 使用 openssl_encrypt (PHP) 加密的字符串
python Crypto AES-256-ECB 与PHP之间完成加解密