您当前的位置:首页 > 电脑百科 > 程序开发 > 算法

安全散列算法SHA详解

时间:2019-11-29 11:08:27  来源:  作者:

SHA,即Security Hash Algorithm缩写,和MD5类似都是信息摘要算法,主要用于数字签名,网络支付,用户登录,密码校验等场景。

网上流传的SHA算法繁多,像SHA1,SHA224,SHA256等等,其实SHA就3个版本,SHA1,SHA2,SHA3,这其中SHA2又包含了SHA224,SHA256,SHA384,SHA512, SHA3同样包含了SHA3-224/256/384/512,他们共同组成了SHA大家族。

SHA1

SHA1可以根据明文生成160bit密文(信息摘要),例如:

明文:abcd

信息摘要81FE8BFE87576C3ECB22426F8E57847382917ACF20

那么与MD5有什么区别?

1.摘要长度不同,MD5为128,SHA1为160位,多出的32位可以让明文的碰撞概率减少2^32倍,破解难度增加,安全性更高。

2.摘要长度增加,意味着性能的降低,SHA的性能比MD5要略低。

但即使如此,Marc Stevens、Pierre Karpman和Thomas Peyrin使用Amazon支持的64-GPU集群(称为Kraken)运行SHA-1内部压缩功能的freestart来碰撞目标,不到10小时便破解了SHA1的摘要信息。

谷歌在2017年宣布停止对SHA1证书的支持,同样微软终止了IE对SHA1的支持。然而,Facebook和Cloudflare提倡更优雅的退休,这样使无法升级到SHA-2的浏览器将继续工作。

SHA2

SHA-2是一系列SHA算法变体的总称,其中包含如下子版本:

SHA-256:可以生成长度256bit的信息摘要。
SHA-224:SHA-256的“阉割版”,可以生成长度224bit的信息摘要。
SHA-512:可以生成长度512bit的信息摘要。
SHA-384:SHA-512的“阉割版”,可以生成长度384bit的信息摘要。

显然,信息摘要越长,发生碰撞的几率就越低,破解的难度就越大。但同时,耗费的性能和占用的空间也就越高。SHA2繁多的种类使灵活性提高了不少,我们可以使用不同的摘要长度满足不同的场景。比如简单的验证数据,使用SHA-256就足够了,使用SHA-512显然是小题大做了。除此之外,如果对安全性追求很高的话,可以使用MD5和SHA2混合算法。如下:

安全散列算法SHA详解

 

分别对"abcd",生成MD5和SHA-256摘要,取MD5的前16位,SHA-256的后20位拼接成36位的摘要,这样就在不知道拼接规则的前提下,摘要几乎不可能被破解。

SHA1和SHA2原理

安全散列算法SHA详解

SHA-1算法

核心过程大同小异,主要的不同点是把160bit的信息摘要分成了A,B,C,D,E五段。其他的与MD5类似。

安全散列算法SHA详解

SHA-2系列算法

把信息摘要分成了A,B,C,D,E,F,G,H八段。

其中SHA-256的每一段摘要长度是32bit,SHA-512的每一段摘要长度是64bit。SHA-224和SHA-384则是在前两者生成结果的基础上做出裁剪。

关于SHA3

由Guido Bertoni、Joan Daemen、Gills Van Assche、Michael Peeters共同设计的Keccak算法最终确定为SHA-3标准,其中Joan Daemen也是对称密码算法AES的设计之一。

基于NIST所设定的条件,我们能够免费、自由地使用SHA-3算法,这与AES的情形完全相同。不过,SHA-3的出现并不意味着SHA-2就不安全了,在一段时间内,SHA-2和SHA-3还将会共存。

目前关于SHA3,多用于数字货币加密,其他项目大部分都是用SHA2做加密手段。SHA3的优势如下:

  • 采用了与SHA-2完全不同的结构。
  • 结构清晰,易于分析
  • 能够适用于各种设备,也适用与嵌入式应用
  • 在硬件上的实现显示出很高的性能
  • 比其他最终候选算法安全性边界更大

对SHA3感兴趣的请自行查看其官方文档,本文不再过多赘述。

开源工具

与MD5一样,JDK提供了丰富非支持。

安全散列算法SHA详解

 

结果:

明文:abcd
SHA密文:
81FE8BFE87576C3ECB22426F8E57847382917ACF20
SHA1密文:
81FE8BFE87576C3ECB22426F8E57847382917ACF20
SHA224密文:
A76654D8E3550E9A2D67A0EEB6C67B220E5885EDDD3FDE135806E60128
SHA256密文:
88D4266FD4E6338D13B845FCF289579D209C897823B9217DA3E161936F03158932
SHA384密文:
1165B3406FF0B52A3D24721F785462CA2276C9F454A116C2B2BA20171A7905EA5A026682EB659C4D5F115C363AA3C79B48
SHA512密文:
D8022F2060AD6EFD297AB73DCC5355C9B214054B0D1776A136A669D26A7D3B14F73AA0D0EBFF19EE333368F0164B6419A96DA49E3E481753E7E96B716BDCCB6F6

其实JAVA中SHA和SHA1就是指的SHA1加密,本文到此结束了。喜欢就关注一下吧,跟我一块进步哦。



Tags:SHA详解   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
SHA,即Security Hash Algorithm缩写,和MD5类似都是信息摘要算法,主要用于数字签名,网络支付,用户登录,密码校验等场景。网上流传的SHA算法繁多,像SHA1,SHA224,SHA256等等,其实SHA就...【详细内容】
2019-11-29  Tags: SHA详解  点击:(62)  评论:(0)  加入收藏
▌简易百科推荐
前言Kafka 中有很多延时操作,比如对于耗时的网络请求(比如 Produce 是等待 ISR 副本复制成功)会被封装成 DelayOperation 进行延迟处理操作,防止阻塞 Kafka请求处理线程。Kafka...【详细内容】
2021-12-27  Java技术那些事    Tags:时间轮   点击:(1)  评论:(0)  加入收藏
博雯 发自 凹非寺量子位 报道 | 公众号 QbitAI在炼丹过程中,为了减少训练所需资源,MLer有时会将大型复杂的大模型“蒸馏”为较小的模型,同时还要保证与压缩前相当的结果。这就...【详细内容】
2021-12-24  量子位    Tags:蒸馏法   点击:(11)  评论:(0)  加入收藏
分稀疏重建和稠密重建两类:稀疏重建:使用RGB相机SLAMOrb-slam,Orb-slam2,orb-slam3:工程地址在: http://webdiis.unizar.es/~raulmur/orbslam/ DSO(Direct Sparse Odometry)因为...【详细内容】
2021-12-23  老师明明可以靠颜值    Tags:算法   点击:(7)  评论:(0)  加入收藏
1. 基本概念希尔排序又叫递减增量排序算法,它是在直接插入排序算法的基础上进行改进而来的,综合来说它的效率肯定是要高于直接插入排序算法的;希尔排序是一种不稳定的排序算法...【详细内容】
2021-12-22  青石野草    Tags:希尔排序   点击:(6)  评论:(0)  加入收藏
ROP是一种技巧,我们对execve函数进行拼凑来进行system /bin/sh。栈迁移的特征是溢出0x10个字符,在本次getshell中,还碰到了如何利用printf函数来进行canary的泄露。ROP+栈迁移...【详细内容】
2021-12-15  星云博创    Tags:栈迁移   点击:(22)  评论:(0)  加入收藏
一、什么是冒泡排序1.1、文字描述冒泡排序是一种简单的排序算法。它重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地...【详细内容】
2021-12-15    晓掌柜丶韶华  Tags:排序算法   点击:(16)  评论:(0)  加入收藏
在了解golang的map之前,我们需要了解哈希这个概念。哈希表,又称散列表(Hash table),是根据键(key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算出一个键值的函数,将...【详细内容】
2021-12-07  一棵梧桐木    Tags:哈希表   点击:(14)  评论:(0)  加入收藏
前面文章在谈论分布式唯一ID生成的时候,有提到雪花算法,这一次,我们详细点讲解,只讲它。SnowFlake算法据国家大气研究中心的查尔斯·奈特称,一般的雪花大约由10^19个水分子...【详细内容】
2021-11-17  小心程序猿QAQ    Tags:雪花算法   点击:(24)  评论:(0)  加入收藏
导读:在大数据时代,对复杂数据结构中的各数据项进行有效的排序和查找的能力非常重要,因为很多现代算法都需要用到它。在为数据恰当选择排序和查找策略时,需要根据数据的规模和类型进行判断。尽管不同策略最终得到的结果完...【详细内容】
2021-11-04  华章科技    Tags:排序算法   点击:(40)  评论:(0)  加入收藏
这是我在网上找的资源的一个总结,会先给出一个我看了觉得还行的关于算法的讲解,再配上实现的代码: Original author: Bill_Hoo Original Address: http://blog.sina.com.cn/s/bl...【详细内容】
2021-11-04  有AI野心的电工和码农    Tags: KMP算法   点击:(36)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条