如果我将散列值存储在数据库中,但被散列的原始值的长度是固定的(例如,始终为 4 个字符),这是否会损害散列函数的单向性质?
更准确地说,我有敏感字符串,然后我将其加密并存储在数据库中。为了搜索这些字符串,我不想解密数据库中的每个条目,因此我还将字符串的前 4 个字符的哈希存储在另一列中。当我想搜索数据库时,我会生成搜索词前 4 个字符的哈希值,并将其与存储的哈希值进行比较,以查找哪些条目匹配或可以匹配,然后解密这些条目以检查冲突并获取其余部分与该条目相关的数据。
我担心的是,由于攻击者知道被散列的字符串的长度是恒定的(4 个字符),他/她只需要生成所有可能的 4 个字母字符串及其散列的表并查找散列值存储在我的数据库中(从而放弃原始敏感字符串的前 4 个字符)。