我正在寻找将一组(唯一)数字映射到另一组(唯一)数字的函数(哈希函数?不确定)。我看过完美的散列 - 以及不可能做到的事实:( - 它似乎非常接近我所追求的。
详细地说,我想要以下内容:
- 将任何给定的 12 位数字映射到另一个 12 位或更多的数字(我不关心结果大小,但它必须适合 Java 长)。
- 必须能够保证相同的 12 位数字每次都映射到相同的数字。
- 必须能够保证不同的 12 位数字始终映射到不同的数字,即结果集中没有冲突。
- 必须能够保证该函数是一种方式,这(无论如何在我看来)意味着您无法根据函数的结果计算您开始的数字。
在我的情况下,像最小散列函数这样的东西不起作用,因为每个数字都必须在不同的计算机上计算,这意味着函数本身必须保证这些特性,而不检查结果中的冲突,或者对结果进行任何集中控制放。
这种函数的一个例子很简单:取数字,加 1,输出数字。唯一的问题是,您只需减去一个即可轻松获得第一个数字。我希望它非常困难,或者最好是不可能找回以前的号码。
有什么想法吗 ?
将函数从数学转换为 java 我不介意自己做。除非您可以建议一个已经存在的 java 库。