2013-04-13 88 views
1

我有以下的加密代码:PHP AES加密256字符怪异

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:yUBF3 * LG-ۅd8f_X/O

我打算将它放入一个mySQL数据库,但不确定它是否会接受这些类型的奇怪字符?

我是否正确地做这件事?

+0

base64_encode并在将其发送到数据库之前将其添加进去 –

+0

那些不是字符。它是您的输出方法无法表示的二进制数据。它可以以这种方式存储在接受二进制数据的列中,或者可以通过'base64_encode()'将其编码为ascii。 –

回答

1

是的,你正在做它,但是输出是一个二进制值。为了节省,这是很好的做法,通过

$encrypted_base64 = base64_encode($crypttext); 

其编码为“常规”字符串只记得解码前做相反;

$crypttext = base64_decode($encrypted_base64); 
+0

所以加入**返回base64_encode($ crypttext); **会解决它吗? – StealthRT

+0

是的,这应该做的伎俩,只是试试:)但也一定要修改你的*解密*方法相同的方式(如上所述) – thaJeztah

+0

好吧,似乎工作。谢谢你的帮助,thaJeztah。 – StealthRT