Java 字符串树路径的哈希函数

Java 字符串树路径的哈希函数,java,algorithm,hash,Java,Algorithm,Hash,我有一个有节点和连接的树。一个节点可以有多个子节点,并且树不是循环的。每个节点只有一条从根节点到节点的移动路径 对于am中的唯一遍历路径,生成一个称为路径的字符串。它是一个字符串节点名称加上顺序(从左到右)。公式为(节点名称-订单-当前节点) 路径确保了唯一性。对于给定的字符串,我想生成一个唯一的32个字母数字。如何做到这一点,什么是合适的哈希函数 差不多 function( N1-1-N2-3-N5 ) = 'HNLKJHDSVX6790978767098' // 32 digit 它应

我有一个有节点和连接的树。一个节点可以有多个子节点,并且树不是循环的。每个节点只有一条从根节点到节点的移动路径

对于am中的唯一遍历路径,生成一个称为路径的字符串。它是一个字符串节点名称加上顺序(从左到右)。公式为(节点名称-订单-当前节点)

路径确保了唯一性。对于给定的字符串,我想生成一个唯一的32个字母数字。如何做到这一点,什么是合适的哈希函数

差不多

function( N1-1-N2-3-N5 ) = 'HNLKJHDSVX6790978767098'   // 32 digit
它应该为相同的输入输出相同的散列。它不是为了安全而需要的,只是为了碰撞检测


MD5,从密码学的角度讲,它已经被破坏了,作为一个简单的散列函数,它仍然是可行的,这就是为什么我认为它会适合你的喜好。只要坚持哈希函数的十六进制表示法,就应该有32字节的哈希

MD5(消息摘要)算法是一种广泛使用的加密哈希函数,产生128位(16字节)的哈希值,通常以文本格式表示为32位十六进制数


你能帮我做碰撞检测吗?@Sumeet如果碰撞会成为问题,那么你应该使用SHA2而不是MD5@Sumeet所有的散列函数都会发生冲突,而“方程组”经过十年的密码学和人类已知的最好的密码学家才在MD5中发现冲突;我怀疑您使用此设置时是否会遇到冲突,但RecursiveExceptionException是正确的,如果您想大幅降低冲突概率,请使用SHA-256,因为它比MD5多128位。