我们可以在加密列上执行通配符搜索吗

lsmepo6l  于 2021-06-26  发布在  Java
关注(0)|答案(1)|浏览(384)

赏金6天后到期。回答此问题可获得+50声望奖励。sree正在寻找一个可靠来源的答案**:

想知道在java中安全地实现加密数据的通配符搜索的最佳方法吗
我正在开发一个web应用程序,其中客户的敏感数据(如姓名、出生日期等)需要加密并存储在数据库中。
为此,我在java中使用加密来加密给定的文本,并将加密值存储在数据库中。
下面是一段加密文本的代码

import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Hex;

String key = "";// key to encrypt/decrypt    
String customerName = "customer name";

Key aesKey = generateMySQLAESKey(key,"UTF-8");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, aesKey);
byte[] encrypted = cipher.doFinal(customerName.getBytes("UTF-8"));
String encrtedName = new String(Hex.encodeHex(encrypted));
// storing this encrtedName as varchar in database

在查询数据库中的数据时,通过在where子句中传递加密值来完成精确搜索
但是我们如何在加密列上执行通配符搜索呢?
我对密码学和加密方法不熟悉。请告诉我最好的方法。

hi3rlvi2

hi3rlvi21#

这是一个评论,而不是一个答案,但作为一个新成员,我只能张贴答案。
对加密数据进行计算与所谓的“同态加密”有关。这是一个研究课题,但目前正在业界实施。我发现这篇论文似乎以一种安全的方式来处理你的问题:https://eprint.iacr.org/2020/931.pdf

相关问题