我的一个客户希望在数据库中对客户名称进行加密,不要问他们为什么只是打算这样做,所以我一直在尝试使用 PHP 进行 MySQL AES_Encrypt 和 AES_Decrypt,所以我真的很感激一些帮助......
加密代码
function addname ($name, $refid) {
include("../config.php");
// Open up a new MySQLi connection to the MySQL database
mysql_connect($dbHost, $dbUsername, $dbPassword);
mysql_select_db($dbTable);
$code = substr($output, 0, 8);
if (!isset($refid)) {
$refid = "ERROR";
}
$query = "INSERT INTO `clients` (fname, code, refid, active) VALUES (AES_ENCRYPT('$fname', UNHEX('F3229A0B371ED2D9441B830D21A390C3')), '$code', '$refid', 0)";
$runQuery = mysql_query($query);
if ($runQuery != true) {
return mysql_error();
} else {
return $code;
}
}
解密代码
function decryptname() {
$input=947270;
include("config.php");
// Open up a new MySQLi connection to the MySQL database
mysql_connect($dbHost, $dbUsername, $dbPassword);
mysql_select_db($dbTable);
// Build the query
$sqlToRun = "SELECT * FROM `clients` WHERE code='$input' AND active=0";
// Run it
$check = mysql_query($sqlToRun);
while($row = mysql_fetch_array($check)) {
$encryptedname = $row['fname'];
$decryptedname = mysql_query("AES_DECRYPT('$encryptedname', UNHEX('F3229A0B371ED2D9441B830D21A390C3'))");
$check2 = $row['fname'];
}
mysql_close();
if (!isset($check2)) {
$check2 = "wow there is no check2";
}
exit($check2);
}
decryptname();
问题
MySQL 数据库显示以下值,看起来正常
e309367d1867c3273a8f8b298ed8beb3
基本上,当我不包含 $decryptedname 时,我会得到以下输出
ã6}gÃ':‹)ŽØ¾³
如果我确实包含它,我会得到一个空白屏幕并且没有 PHP 或 MySQL 错误?
更多信息
名称的数据库列结构是
varbinary(9999)
如果有人可以帮助我,我将不胜感激,如果您需要更多信息,请询问!
更新
我在 SQL 中运行了以下命令,它返回NULL
SELECT AES_DECRYPT('password', "UNHEX('F3229A0B371ED2D9441B830D21A390C3')") FROM passwords WHERE code=947270