使用AES_ENCRYPT和AES_DECRYPT我没有返回数据

时间:2015-12-08 11:22:06

标签: php mysql aes password-encryption

我正在尝试使用 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;

这只是什么都不返回。谁能告诉我哪里出错了? 谢谢!

4 个答案:

答案 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。