Java中是否存在固定哈希长度字符串的现成双向哈希函数?
Does ready two-way hash function for strings with fixed hash length exist in Java?
我需要对字符串使用哈希和加密(双向)函数。哈希应为固定长度(5-6 个符号)。
示例:
String hashed = MagicHashLib.hash("long string"); //hash is hd45dk as an example
String enhashedLongString = MagicHashLib.enhash(hash);
Java中是否存在已经实现的算法?或者我应该自己写?
你要找的是加密解密。
哈希总是单向的。您无法从哈希值中恢复原始字符串。
关于散列和加密之间差异的简要说明see this answer
我认为这样的哈希值不存在,无论是哪种编程语言。
引用自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
吗?
我需要对字符串使用哈希和加密(双向)函数。哈希应为固定长度(5-6 个符号)。
示例:
String hashed = MagicHashLib.hash("long string"); //hash is hd45dk as an example
String enhashedLongString = MagicHashLib.enhash(hash);
Java中是否存在已经实现的算法?或者我应该自己写?
你要找的是加密解密。
哈希总是单向的。您无法从哈希值中恢复原始字符串。
关于散列和加密之间差异的简要说明see this answer
我认为这样的哈希值不存在,无论是哪种编程语言。
引用自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
吗?