2013-06-22 19 views
0

я создал две функции для шифрования и дешифрования, как этотШифрование - расшифровка, базы данных

function encryption($x) { 
    $key = 'SuperSecretKey'; 
    $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $x, MCRYPT_MODE_ECB); 
    return $encrypted; 
} 

function decryption($y) { 
    $key = 'SuperSecretKey'; 
    $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $y, MCRYPT_MODE_ECB); 
    return $decrypted; 
} 

я вставил зашифрованный пароль в databbase его работает нормально, когда я получить пароль из базы данных я получить зашифрованный пароль, как это

$dpass = "select Password from persons where Email='" . $_POST['name'] . "'"; 
$rpass = mysql_query($dpass); 
$line = mysql_fetch_array($rpass); 
$lpass = $line['Password']; 
echo $lpass; 

Но проблема в том, когда U использовать дешифрования Func

$d_pass = decryption($lpass); 

echo $d_pass; 

Это не дает мне тот же текст, который я использовал для пароля? Не могли бы вы рассказать мне, в чем проблема?

+2

Записи все прописной считаются криком и грубым. –

+4

Не храните зашифрованный пароль. Хешируйте их и храните в базе данных. –

+2

Кроме того, WTF работает с 'mysql_query' в 2013 году? : P Проверьте [PDO] (http://php.net/manual/en/book.pdo.php) и [mysqli] (http://php.net/manual/en/book.mysqli.php). – cHao

ответ

0

Попробуйте

function encryption($x) { 
    $key = 'SuperSecretKey'; 
    $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $x, MCRYPT_MODE_CBC, md5(md5($key)))); 
    return $encrypted; 
} 

function decryption($y) { 
    $key = 'SuperSecretKey'; 
    $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($y), MCRYPT_MODE_CBC, md5(md5($key))), "\0"); 
    return $decrypted; 
}