是否有一个Java库在对象树上执行消息摘要?

时间:2009-08-31 12:00:30

标签: java debugging utilities

我正在寻找一个库,给定一个对象树,在整个结构上执行消息摘要或散列。

我想看看传递给方法的对象是否被修改(该对象包含其他对象,包含对象等等 - 没有一个是不可变的)。

有没有办法检查结构中任何对象的状态是否发生变化?

3 个答案:

答案 0 :(得分:1)

您可以为树中的所有对象实现hashCode()。如果根对象的hashCode已更改,则您知道树中某个对象的状态已更改。

答案 1 :(得分:0)

使用散列检测更改的问题是它不提供绝对的“否”答案。它只是告诉你可能没有被改变。

如果你没有错过一些更改,那么确定,在树上散列。

如果没有,你必须考虑其他选择,但在我提出建议之前,我需要更多地了解你的情况。

答案 2 :(得分:0)

我使用JRE提供的标准MessageDigest和MD5完成了这项工作。

One link

关于碰撞,当我有两个具有相同MD5的对象时,我知道它们可能是相同的,所以我做了一个完整的递归比较。尽管如此,冲突是不可能的,并且确实值得实施这项技术。