php - 如何实现对加密数据库字段的搜索
问题描述
我正在为我的 Web 应用程序使用 PHP 和 MySql。我有一个需要加密用户特定信息的要求,比如姓名和电子邮件 ID。
$name = "Kevin John";
$encryptionMethod = "AES-256-CBC";
$secretHash = "25c6c7ff35b8879b151f2136cd13574";
$enc_name = openssl_encrypt($textToEncrypt, $encryptionMethod, $secretHash);
我将此加密名称存储在我的数据库中。但真正的问题是我需要根据他们的名字搜索用户。例如:-
$qry = "select * from users where name like %john%";
任何建议表示赞赏
解决方案
在 SQL 中使用 AES 加密和解密来实现对加密数据库字段的搜索。句法:-
AES_ENCRYPT('Text_to_encrypt', 'secret_key')
AES_DECRYPT('Text_to_decrypt', 'secret_key')
首先在 sql 中使用 AES Encryption 加密和存储 DB 中的数据
INSERT INTO User (fname,email,mobile) VALUES (AES_ENCRYPT('Arun gopan', 'Qwfe345dgfdg'), AES_ENCRYPT('arun123@fa.com', 'Qwfe345dgfdg'),'9658475577');
现在您可以在 sql 中使用 AES DECRYPT 查询数据库以执行搜索操作。
SELECT AES_DECRYPT(fname,'Qwfe345dgfdg'), AES_DECRYPT(email,'Qwfe345dgfdg') FROM User WHERE AES_DECRYPT(fname,'Qwfe345dgfdg') LIKE '%Arun%';
推荐阅读
- javascript - RegExp 如何在此示例中替换双引号上的单引号
- css - 仅适用于平板电脑和手机的 CSS 规则,而不适用于台式机?
- laravel - 在流明中每分钟执行一次工作
- audio - 什么 FFMPEG 命令将以特定时间戳覆盖 2 个音频文件?
- templates - 维基媒体模板中的空间
- python - 如何在启动 Chrome 并尝试使用 Selenium 使用 ChromeDriver 访问网页时解决“获取默认适配器失败”错误
- geoserver - 重投影:wms级联还是客户端js?
- python - NiFi Parse PDF 使用 Python Tika 错误:ExecuteStreamCommand
- swift - Swift,遗传算法中的协议和泛型
- javascript - JSON中只有一个数据时返回错误的数组