如何使用 Spring Boot JPA 和 PostgreSQL 对数据库行中的加密值实现搜索工具



我们使用Spring Boot进行Web开发,使用PostgreSQL作为后端

我们user_table以加密格式存储用户手机号码的位置,对于加密和解密值,AES算法用于业务逻辑层。

我们在正面显示用户列表,并提供"搜索过滤器"文本框元素,以便用户可以搜索用户名中包含的任何值或user_table行中的其他值,如城市、州等。

请注意,我们在服务器端使用分页。

但是我们不能在数据库中按手机号码搜索,因为它以加密格式存储。如果我们使用客户端分页,那么它可以在列表中搜索,但无法将分页从服务器端更改为客户端。

请指导我如何通过具有加密值的DB中的手机号码搜索用户。

这在数据库手段中是不可能的:如果值在数据库中加密,则数据库不知道明文值。这对安全性有好处,但数据库不能使用该值的索引。

例外情况可能是搜索相等性:您可以加密要查找的值,并使用btreehash索引来搜索数据库中加密形式正是该值的所有值。

如果您的加密方法使用盐或随机迭代计数,那么您不能在数据库中执行此操作(只是"AES"没有告诉我们这一点(。 如果没有,则使用相同密钥加密的相同值每次都应给出相同的答案。然后,您应该能够在客户端上加密查询词,并将其发送到数据库以搜索相等性。

最新更新