gpt4 book ai didi

php - 在 MySQL 中搜索加密数据的过滤器

转载 作者:可可西里 更新时间:2023-11-01 07:38:34 26 4
gpt4 key购买 nike

查询描述:假设,我有一个数据库表,它以加密形式存储所有用户的数据。我有一个管理员可以搜索用户数据的功能。现在的问题是,管理员将在文本框中输入普通文本,我必须根据管理员的输入过滤用户列表(每次文本更改时)。因此,与此同时,我有一堆加密形式的数据,我必须根据管理员输入的正常文本对其进行过滤。

到目前为止我想出的解决方案是,我首先解密所有数据,然后应用过滤器。但我很想知道,如果我的数据库中有数百万条记录,那么当前的方式似乎毫无用处且效率低下怎么办。

谁能帮我以最有效的方式搜索加密数据?

任何帮助将不胜感激!

谢谢。

最佳答案

What solution I came up till now is, I am decrypting all the data at first and then applying the filter. But I am curious to know, What if I have millions of records in my database then current way seems useless and inefficient.

您是对的,这不是一个可扩展的解决方案。如果您想深入了解这个问题,请参阅:Building Searchable Encrypted Databases with PHP and SQL .

你要做的是:

  1. 使用经过身份验证的加密按原样存储加密数据。
  2. 在密文旁边存储明文的盲索引
    • 盲索引可以是HMAC-SHA256(plaintext, separate_key)
    • 敏感值应使用 sodium_crypto_pwhash()hash_pbkdf2() 代替。
    • 为了节省空间,截断盲索引并将其视为布隆过滤器。

这为您提供了两全其美的优势:数据加密既可以抵御被动攻击,也可以抵御主动攻击,而且还允许用于快速 SELECT 查询。

更新(2019-03-27):与其自己构建,不如查看 CipherSweet它实现了这个设计。

关于php - 在 MySQL 中搜索加密数据的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46659528/

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