gpt4 book ai didi

PHP查询/比较MySQL中的用户输入和aes加密数据

转载 作者:行者123 更新时间:2023-11-29 07:01:05 24 4
gpt4 key购买 nike

我正在尝试找到通过 PHP 查询 MySQL 表的正确方法,其中表中的字段经过 AES 加密。我有一个登录表单,它获取last_name 以及一些其他字段并执行查询进行比较。这是相关结构的片段。

我使用以下方式插入数据:

AES_ENCRYPT('".$last_name."','".$encryption_key."') 

我可以使用以下方法解密并输出数据:

CAST(AES_DECRYPT(last_name, '$encryption_key') AS CHAR(66)) last_name_decrypt

但是我无法与工作进行比较。我已经尝试过

$query = "SELECT * from {$tablename} where last_name = AES_ENCRYPT('".$unauth_last_name."','".$encryption_key."')";

感谢任何帮助或指导。

最佳答案

我认为您错过了与 php 获取的姓氏的比较 - 可能来自登录 html 表单。假设保存您要检查的姓氏的 php 变量名为 $in_last_name,则查询可能类似于 sg,如下所示:

    $query = "SELECT * from {$tablename} WHERE last_name = AES_ENCRYPT('".$in_last_name."','".$encryption_key."')";

(显然,你应该清理你的输入或使用带有参数绑定(bind)的准备好的语句来防止sql注入(inject)攻击。由于我不知道你使用什么API来连接到MySQL,所以我无法为此提出确切的解决方案。无论如何,这个超出了这个问题的范围。)

查询对输入的姓氏(纯文本)进行加密,并根据存储的加密数据进行检查。另外,where 子句中不能有字段别名。

同样,以这种方式使用字段级加密不会使数据安全,因为它依赖于加密 key 的 secret 。这种加密只会让你的生活变得更加困难。

您可能想了解 MySQL 中加密数据的其他方法。查看MySQL Enterprise Encryption例如,它允许 DBA 管理加密数据,而无需实际访问纯文本版本。是的,这不是免费产品。

关于PHP查询/比较MySQL中的用户输入和aes加密数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43477772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com