首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >区分SHA-1和SHA-2

区分SHA-1和SHA-2
EN

Stack Overflow用户
提问于 2017-03-15 20:51:43
回答 2查看 71关注 0票数 2

我们有一个加密数据的程序,需要知道它使用的是SHA-1还是SHA-2。不幸的是,唯一的提示是一个带有散列值的表。有人能告诉我如何区分这两种加密类型,并告诉我这里使用哪种加密类型吗?

EN

回答 2

Stack Overflow用户

发布于 2017-03-15 21:06:08

我们有一个加密数据的程序,需要知道它使用的是

-1还是SHA-2。

我假设你的意思是你在散列数据。SHA是一系列散列算法,而不是加密算法。

区分它们的主要方式是它们的长度。SHA-1是160位(20字节)。SHA-2有几种形式,从224到512位(28-64字节)。请注意,有一些SHA-2的截断版本,因此很难确切地确定使用的是哪一个,但它们都比SHA-1长。

票数 2
EN

Stack Overflow用户

发布于 2017-03-15 21:23:24

你的意思可能是散列,而不是加密。加密是可逆的,散列是不可逆的,加密就像随机置换,而散列则试图像一个随机函数。SHA-1是160位(20字节)长,而SHA-2是散列函数族224-512位长(28-32字节)。注您可以使用十六进制编码或base64编码,这将为每个编码字符提供4或6位。在某些情况下(例如,密码散列),习惯上在散列前面加上关于它们是如何创建的信息,并且你会看到散列字符串以一些特殊的前缀开头,比如$1$,它告诉你正在查看的是什么。

如果您没有额外的前缀并将数据截断到相同的长度,并且在散列之前您对输入一无所知,我相信您无法通过任何实际方法区分这两者。区分SHA-1和截断的SHA-2的能力意味着它们中至少有一个可以从随机数据中分离出来,我们需要安全的密码函数来区分这些随机数据。我没有意识到一个实际的区别攻击。

不管计算复杂度如何,你不能以很高的概率分辨出单个散列来自哪里,因为大多数散列都有来自另一个函数的前映像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42810344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档