在Groovy中将可变长度字符串散列为12位数字的单向函数

ana*_*ocs 1 java random hash groovy

我有由字母,数字和特殊字符(电子邮件地址)组成的唯一可变长度字符串列表.列表中的每个电子邮件地址都是唯一的.

我需要单向散列函数(我不需要能够从生成的数字中检索原始值),它将使用salt散列字符串并生成12位数字.

我想确保唯一性,因此我将检查先前生成的值列表以检测冲突,然后在发生冲突时生成新数字.可预测性不是问题.

理想情况下,我希望这个函数用Groovy编写,但Java也可以.

Jon*_*eet 6

我需要保证每个生成的数字都是唯一的.

那显然会成为一个问题.可能的输入字符串比可能的输出值更多.特别是,每个可能的输出值(12位数字符串)都是可能的输入值.因此,如果所有这些都获得唯一的输出值,则任何其他输入值都不可能有任何输出值.

当然,您可以随时记录您遇到的每个电子邮件地址(因此第一个以000000000000结束,第二个获取000000000001等)但这是存储问题而不是哈希本身.你不能从输出只是输入,不支持存储.