我们有一个加密数据的程序,需要知道它使用的是SHA-1还是SHA-2。不幸的是,唯一的提示是一个带有散列值的表。有人能告诉我如何区分这两种加密类型,并告诉我这里使用哪种加密类型吗?
发布于 2017-03-15 21:06:08
我们有一个加密数据的程序,需要知道它使用的是
-1还是SHA-2。
我假设你的意思是你在散列数据。SHA是一系列散列算法,而不是加密算法。
区分它们的主要方式是它们的长度。SHA-1是160位(20字节)。SHA-2有几种形式,从224到512位(28-64字节)。请注意,有一些SHA-2的截断版本,因此很难确切地确定使用的是哪一个,但它们都比SHA-1长。
发布于 2017-03-15 21:23:24
你的意思可能是散列,而不是加密。加密是可逆的,散列是不可逆的,加密就像随机置换,而散列则试图像一个随机函数。SHA-1是160位(20字节)长,而SHA-2是散列函数族224-512位长(28-32字节)。注您可以使用十六进制编码或base64编码,这将为每个编码字符提供4或6位。在某些情况下(例如,密码散列),习惯上在散列前面加上关于它们是如何创建的信息,并且你会看到散列字符串以一些特殊的前缀开头,比如$1$,它告诉你正在查看的是什么。
如果您没有额外的前缀并将数据截断到相同的长度,并且在散列之前您对输入一无所知,我相信您无法通过任何实际方法区分这两者。区分SHA-1和截断的SHA-2的能力意味着它们中至少有一个可以从随机数据中分离出来,我们需要安全的密码函数来区分这些随机数据。我没有意识到一个实际的区别攻击。
不管计算复杂度如何,你不能以很高的概率分辨出单个散列来自哪里,因为大多数散列都有来自另一个函数的前映像。
https://stackoverflow.com/questions/42810344
复制相似问题