2013-04-13 87 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