我们有一个加密数据的程序,需要知道它是使用SHA-1还是SHA-2。不幸的是,唯一的提示是具有哈希值的表。 有人可以告诉我如何区分这两种加密类型,并告诉我这里使用哪种加密类型?
答案 0 :(得分:2)
我们有一个程序来加密数据,需要知道它是否使用SHA-1或SHA-2。
我认为你的意思是你要散列数据。 SHA是一系列哈希算法,而不是加密算法。
您要区分的主要方式是它们的长度。 SHA-1是160位(20字节)。 SHA-2有多种形式,从224到512位(28-64字节)。请注意,SHA-2有一些截断版本,因此很难确切地确定使用哪一个,但它们都比SHA-1更长。
答案 1 :(得分:0)
您可能意味着哈希不加密。加密是可逆的,哈希不是,加密就像随机排列而不是哈希试图像随机函数。 SHA-1的长度为160位(20字节),而SHA-2是一系列长度为224-512位(28-32字节)的散列函数。 请注意,您可能具有十六进制编码或base64编码,这将为每个编码字符提供4或6位。 在某些情况下(例如密码哈希),习惯上为哈希添加有关如何创建它们的信息,并且您会看到哈希字符串以一些特殊的前缀开头,例如$ 1 $,它告诉您正在查看的内容。
如果你没有额外的前缀并且数据被截断到相同的长度,并且在散列之前你对输入一无所知我不相信你可以通过任何实际的方法来辨别这两者。能够区分SHA-1和截断的SHA-2之间的区别意味着它们中的至少一个可以与随机数据分开,我们要求安全加密函数不可解决。 我不知道一个实际的区别攻击。
无论计算复杂程度如何,您都无法分辨出单个散列的概率,因为大多数散列都有来自其他函数的预映像。