首页 > 解决方案 > 如何实现对加密数据库字段的搜索

问题描述

我正在为我的 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%";

任何建议表示赞赏

标签: phpmysqlsearchencryption

解决方案


在 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%';


推荐阅读