我正在尝试使用 AES_ENCRYPT 和 AES_DECRYPT ,我确实在MYSQL数据字段中获得了一串随机字符,但无法使用AES_DECRYPT <返回任何内容/ p>
我的密码表格字段设置为 VARBINARY,600长度。
添加到数据库中我有:
mysqli_select_db( $connection , $databaseName );
$request = '
UPDATE person
SET firstName = AES_ENCRYPT("Fred","key123")
WHERE ID="34"';
$result = mysqli_query( $connection , $request );
从数据库中选择我有:
mysqli_select_db( $connection , $databaseName );
$request = "SELECT AES_DECRYPT(firstName, 'key123') FROM account WHERE ID = 34";
$result2 = mysqli_query($connection , $request);
$row = mysqli_fetch_array($result2);
$firstName = $row['firstName'];
echo $firstName;
这只是什么都不返回。谁能告诉我哪里出错了? 谢谢!
答案 0 :(得分:0)
在更新查询中,您使用ID作为字符串,并在SELECT查询中将其用作int,尝试解决此问题。
您应该将选择更改为WHERE ID = "34"
答案 1 :(得分:0)
您正在处理两个不同的表。 您正在更新“人”表。然后,您从“帐户”表中进行选择。
答案 2 :(得分:0)
更改
$request = "SELECT AES_DECRYPT(firstName, 'key123') FROM account WHERE ID = 34";
对此:
$request = `SELECT AES_DECRYPT(firstName, 'key123') FROM person WHERE ID = "34"`;
答案 3 :(得分:-1)
试试这个:
SELECT AES_DECRYPT(AES_ENCRYPT('firstName','mykeystring')FROM account WHERE ID = 34";
<强>解释强>
我在线阅读上述sql语句使用mykeystring解密加密字符串'firstName'并返回原始字符串firstName。