我需要对字符串使用hash和en-hashed(双向)函数。哈希应该是固定长度(5-6个符号)。
示例:
String hashed = MagicHashLib.hash("long string"); //hash is hd45dk as an example
String enhashedLongString = MagicHashLib.enhash(hash);
Java中是否存在已实现的算法?或者我应该写自己的?
答案 0 :(得分:2)
答案 1 :(得分:1)
我不认为这样的哈希存在,无论编程语言如何。
以下是hash function wikipedia page:
的引用A hash function is any function that can be used to map data of arbitrary size to data of fixed size.
这意味着您拥有一组固定的值,例如一个6个字符长的哈希可以存储16^6
个不同的值。但是,您可以创建任何字符串的哈希值。因此,哈希函数可能将无限的不同值映射到固定的值集。因此会发生碰撞。所以你不能仅仅通过正确的原始值的哈希值来判断。
虚构散列函数的简单示例:John
映射到abc
。 Jane
映射到ghi
。 Doe
也会映射到abc
。因此,当您将abc
视为散列值时,它来自哪里?是John
吗?是Doe
吗?