Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有由字母、数字和特殊字符(电子邮件地址)组成的唯一可变长度字符串列表。列表中的每个电子邮件地址都是唯一的。
我需要一个单向哈希函数(我不需要能够从生成的数字中检索原始值),它将用盐对字符串进行哈希处理并生成一个 12 位数字。
我想确保唯一性,因此我将检查先前生成的值列表以检测冲突,然后在发生冲突时生成一个新数字。可预测性不是问题。
理想情况下,我希望这个函数用 Groovy 编写,但 Java 也可以。
我需要保证每个生成的数字都是唯一的。
那么这显然会是一个问题。可能的输入字符串多于可能的输出值。特别是,每个可能的输出值(12 位字符串)都是可能的输入值。因此,如果所有这些都获得唯一的输出值,则不可能为任何其他输入值留下任何输出值。
当然,您总是可以记录您遇到的每个电子邮件地址(因此第一个以 000000000000 结尾,第二个以 000000000001 等结尾),但这是一个存储问题,而不是散列本身。如果没有后备存储,您无法仅从输入获得输出。