Java中是否存在具有固定散列长度的字符串的现成双向散列函数?

时间:2018-06-01 09:05:37

标签: java algorithm hash hashtable

我需要对字符串使用hash和en-hashed(双向)函数。哈希应该是固定长度(5-6个符号)。

示例:

String hashed = MagicHashLib.hash("long string"); //hash is hd45dk as an example
String enhashedLongString = MagicHashLib.enhash(hash);

Java中是否存在已实现的算法?或者我应该写自己的?

2 个答案:

答案 0 :(得分:2)

您要找的是加密和解密

Hashing 始终是单向的。您无法从其哈希值中恢复原始字符串。

有关散列和加密see this answer

之间差异的简要说明

答案 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映射到abcJane映射到ghiDoe也会映射到abc。因此,当您将abc视为散列值时,它来自哪里?是John吗?是Doe吗?

相关问题