【发布时间】:2013-02-15 21:23:48
【问题描述】:
MessageDigest.getInstance("SHA") 似乎工作并给了我一个MessageDigest,但我不知道它给了我什么算法。
是 SHA-1 还是 SHA-0 还是 ..?
我对我的机器上发生的事情不感兴趣。我想知道它是否会为所有有效的 Java 实现返回 sha0 或 sha1(或者它是未定义的)。
【问题讨论】:
-
解决这个问题的简单方法是使用返回的任何内容来散列字符串“The quick brown fox jumps over the lazy dog”并检查输出。如果你得到
2fd4e1c6-7a2d28fc-ed849ee1-bb76e739-1b93eb12,那么你就有了 SHA-1。 Lee Meador 的回答显示了一种查看SHA别名的编程方式。 -
@NikBougalis,您是否还检查了 sha-0 和 sha-1 是否出现相同的输出?我怎么知道它们可能不同?我什至在任何地方都找不到关于 sha-0 的描述。
-
@NikBougalis 引用需要
-
摇头如果你愿意,请查看cc.utah.edu/~nahaj/ada/sha/sha-0 以获取
SHA-0的实现,获取它,编译它,执行它并自己测试它。事实是SHA-1执行了滚桶操作,而SHA-0没有。这显着改变了算法的输出(如果没有其他原因,因为雪崩效应)。如果任何字符串同时使用SHA-0和SHA-1散列到相同的值,那将是一个惊人的巧合。
标签: java cryptography undefined-behavior