【问题标题】:PHP AES 256 encrypt weird charactersPHP AES 256 加密奇怪的字符
【发布时间】: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。

标签: php mysql encryption aes mcrypt


【解决方案1】:

是的,你做对了,但是输出是一个二进制值。为了保存,最好通过

将其编码为“常规”字符串
$encrypted_base64 = base64_encode($crypttext);

只记得在解码之前做相反;

$crypttext = base64_decode($encrypted_base64);

【讨论】:

  • 是的,这应该可以解决问题,试试吧:) 但也一定要以同样的方式修改你的 decrypt 方法(如上所述)
猜你喜欢
  • 2011-10-09
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
相关资源
最近更新 更多