gpt4 book ai didi

php - 困境,在没有其他信息已知的情况下搜索散列字段

转载 作者:可可西里 更新时间:2023-11-01 08:01:04 28 4
gpt4 key购买 nike

我遇到了一个难题。我有一个 hashedX 字段,它是一个散列值/加盐值,按照惯例,加盐值保存在 mysql 数据库的同一行中。

hashedX      saltX
------ ------
hashed1 ssai3
hashed2 woddp
hashed3 92ofu

当我收到 inputX 时,我需要知道它是否匹配 hashedX 中的任何值,例如 hashed1 hashed2hashed3。所以通常我会接受我的输入,对其进行散列/加盐,并将其与 hashedX 的值进行比较。伪代码:

$hashed_input = hash ($input with $salt );
select * from tablename where $hashed_input is hashedX

问题是我不知道在执行任何select 之前我什至需要到达$hashed_input 哪个saltX

我可以逐行浏览数据库行,在我的输入上尝试加盐,然后检查用这种加盐散列/加盐的输入是否与同一行的 hashedX 匹配。如果我有 100,000 条记录,我猜这会非常慢。我不知道有多慢,因为我不擅长数据库。

  • 有没有比选择所有行、遍历它们、使用该行的 salt 对输入进行哈希运算,然后再次与数据库中的哈希值进行比较更好的方法?

最佳答案

如果可能(取决于您的散列公式)为 hash 公式定义一个 MySQL User Defined Function 数据库端(参见 CREATE FUNCTION)。这样您就可以通过一个简单的请求获得结果:

SELECT hashedX, saltX FROM tablename WHERE UDFhash(input, saltX) = hashedX ;

关于php - 困境,在没有其他信息已知的情况下搜索散列字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3199577/

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