Php 使用AES_加密和AES_解密,我不会得到返回的数据

Php 使用AES_加密和AES_解密,我不会得到返回的数据,php,mysql,aes,password-encryption,Php,Mysql,Aes,Password Encryption,我尝试使用AES_加密和AES_解密,我确实在MYSQL数据字段中获得了一个随机字符字符串,但无法返回任何AES_解密 密码的“我的表”字段设置为VARBINARY,长度为600 将以下内容添加到数据库中: 从我拥有的数据库中选择: 这只是一无所获。谁能告诉我哪里出了问题? 谢谢 在更新查询中,您将ID用作字符串,在选择查询中,它用作int,请尝试修复此问题。 您应该将select更改为其中ID=34尝试以下操作: 从ID=34的帐户中选择AES_DECRYPTAES_ENCRYPT'first

我尝试使用AES_加密和AES_解密,我确实在MYSQL数据字段中获得了一个随机字符字符串,但无法返回任何AES_解密

密码的“我的表”字段设置为VARBINARY,长度为600

将以下内容添加到数据库中:

从我拥有的数据库中选择:

这只是一无所获。谁能告诉我哪里出了问题?
谢谢

在更新查询中,您将ID用作字符串,在选择查询中,它用作int,请尝试修复此问题。 您应该将select更改为其中ID=34

尝试以下操作:

从ID=34的帐户中选择AES_DECRYPTAES_ENCRYPT'firstName'、'mykeystring'

说明:


我在网上看到,上面的sql语句使用mykeystring对加密字符串“firstName”进行解密,并返回原始字符串firstName。

您正在处理两个不同的表。 您正在更新“person”表。然后,您将从“帐户”表中进行选择。

更改

$request = "SELECT AES_DECRYPT(firstName, 'key123') FROM account WHERE ID = 34";
为此:

$request = `SELECT AES_DECRYPT(firstName, 'key123') FROM person WHERE ID = "34"`;

您永远不应该加密用户的密码。您需要使用散列,而一些强散列是PBKDF2、bcrypt、scrypt和Argon2。由于散列函数是单向函数,因此无法解密散列。为了对用户进行身份验证,您可以再次通过哈希函数运行密码,以便与存储在数据库中的哈希进行比较。查看更多:您输入了key123,但试图检索123。如果只是不返回任何内容,我看不出您在哪里回显任何内容。添加到我拥有的数据库中-这不是添加,而是更新。添加是插入到。。。。你怎么知道它更新成功了?你的问题不清楚。@Artjom B密码的使用只是一个例子,我计划对所有密码进行哈希运算@Fred-ii-我试着将salt改为两个键123,但仍然没有返回任何内容,我还检查了MYSQL数据库,因为可以看到字段中的数据。还有其他想法吗?看看这个答案是否有帮助。我已经更新了问题代码,使其更有意义。在我看来,它仍然像字符串vs int问题。你认为这会解决这个问题吗?然后,您应该添加解释,而不是尝试以下操作:。否则,您应该将其添加为注释。嘿,穆罕默德,我已经尝试过了,但只得到了一个错误返回:警告:mysqli_fetch_数组期望参数1为mysqli_result,布尔值在…中给出,其中表示“$result2=mysqli_query$connection,$request”将其替换为“$result2=mysqli_query$connection,$request或die mysqli_error$connection;建议的内容甚至没有经过测试。括号缺失,我在线阅读,不在我的环境中工作
$request = "SELECT AES_DECRYPT(firstName, 'key123') FROM account WHERE ID = 34";
$request = `SELECT AES_DECRYPT(firstName, 'key123') FROM person WHERE ID = "34"`;