java - 在 Groovy 中将可变长度字符串散列为 12 位数字的一种方法函数

标签 java random groovy hash

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

我需要一个单向哈希函数(我不需要能够从生成的数字中检索原始值),它会用盐对字符串进行哈希处理并生成一个 12 位数字。

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

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

最佳答案

I need to guarantee that each generated number will be unique.

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

当然,您始终可以记录您遇到的每个电子邮件地址(因此第一个以 000000000000 结尾,第二个以 000000000001 结尾,等等),但这是一个存储问题,而不是散列本身。如果没有后备存储,您无法从输入中获取输出。

关于java - 在 Groovy 中将可变长度字符串散列为 12 位数字的一种方法函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10623500/

相关文章:

java - strip 对象元数据字段的使命是什么?

jquery - 带有 href 的多个随机 img

c - 使用赔率的随机数生成器

java - 使用 GoogleDriveApi for android 和 Groovy 时出现奇怪的 ClassCastException 错误

java - 如何配置 maven 和 intellij 以包含 groovy 和 java 的参数编译器标志

java - 在 eclipse maven 中链接源文件夹时出现错误

java - `Greedy` 和 `Reluctant` 正则表达式量词有什么区别?

java - 观看目录时仅触发一次事件

Python:生成具有最小和最大位数的唯一随机数列表

java - 从 Shiro 主题获取 grails 域对象