有效地比较MySQL数据集中的哈希值

时间:2017-06-16 13:55:20

标签: php mysql security hash

我有一个加密数据库(MySQL),其中某些列需要由(非公开的,授权的)用户搜索。

我一直在阅读有关搜索数据库中加密字段的this article on Database SE

我从阅读本文得出结论,最好的方法是使用列值的哈希值与给定数据进行比较,因此:

示例:
正在搜索电话号码。

  

HTML:用户输入电话号码以搜索
  PHP:电话号码是哈希的   MySQL:搜索hashed_phone列以进行比较(=)并返回   匹配结果。
  PHP:匹配结果行被解密,然后输出给用户。

鉴于我无法搜索部分电话号码的小警告(这在概念上是理想的但远远超出了这个特定问题的范围),我发现一个问题:

使用安全散列算法(password_hash等)都使用salt作为最佳实践,而完全有意义 但是给了我一个问题如果我创建搜索词的哈希值加上盐,这会使哈希 不同,从存储的数据库值开始,我就不能使用比较运算符了从数据集中找到正确的行。

摘要:

  • 如何解决此问题,并且加密数据可以进行某种程度的搜索,而无需单独解密数据集的每一行?
  • 我可以使用不使用盐的安全哈希算法(与听起来相反),而不会在静态数据的安全风险中留下[潜在]漏洞(at至少,对于那些专栏)?
    • 我有没有想过的替代方法?
  • 我希望MySQL方面的内容尽可能高效,数据集中有数千行,因此通过每一行然后进行decrpyt检查是非常低效的。

我该怎么做?

0 个答案:

没有答案