使用PHP加密mySQL中的信息時遇到問題。我使用下面的例子,最後我可以加密內容,但是當我在其他頁面解密時,會顯示一些奇怪的單詞。使用mySQL進行PHP加密和解密
請幫
我使用下面的函數來加密
<?php
header("Content-Type:text/html; charset=utf-8");
$key = md5('test');
function encrypt($string, $key) {
$string = rtrim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$key,$string,MCRYPT_MODE_ECB)));
return $string;
}
//connection
....
//connection
mysqli_set_charset($con, 'utf8');
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$name = mysqli_real_escape_string($con,$_POST['name']);
$sql="INSERT INTO db (name) VALUES ('".encrypt($name,$key)."')";
if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
?>
並使用以下功能來解密
<?php
header("Content-Type:text/html; charset=utf-8");
$key = md5('test');
function decrypt($string, $key) {
$string = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$key,base64_encode($string),MCRYPT_MODE_ECB));
return $string;
}
//connection
....
//connection
mysqli_set_charset($con, 'utf8');
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$query = "SELECT * FROM db";
$result = mysqli_query($con, $query);
while($row = mysqli_fetch_array($result)) {
echo $row['name'] ;
echo decrypt($row['name'],$key) ;
}
?>
輸入:TEST
和解密的結果:
K704rW4crOuvpDZe/yZ2ums0btlo8hvpeyJr91V+Ycg=�x�_L��kR�^О�dMFH��7*�%Ίֶ���M_<��w���W�^ ��3M�"��Rk�
我原來的輸入 – userzero 2014-11-03 10:43:02
的輸入: TEST | 輸出: UQJokP0OqdnWUj5fOkI7dST/DI5rbqNfCyutFK2QNVQ = |奇怪的話: E「RW,X%| R2>} n'w1y4 yO'0 |〜PL { XK; – userzero 2014-11-03 11:00:47
應該不是你的解密函數使用'BASE64_DECODE()',而不是'BASE64_ENCODE()' – 2014-11-03 11:04:11