内容简介:SHA-1,哈希(Hash)算法,一个非常流行的加密散列函数。在许多安全协议中广为使用,通常被用做密码加密,文件校验等,曾被视为MD5的后继者,且存在不可逆性.(和MD5同为MD4导出,所以具备一定的相似性)
一. 简介
SHA
家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美国安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布;是美国的政府标准。后四者有时并称为SHA-2。
SHA-1,哈希(Hash)算法,一个非常流行的加密散列函数。在许多安全协议中广为使用,通常被用做密码加密,文件校验等,曾被视为MD5的后继者,且存在不可逆性.(和MD5同为MD4导出,所以具备一定的相似性)
这个算法的思想是输入长度不限的明文,产出一个160位的信息摘要(比MD5多出32位).也是会压缩原来的内容,输出固定长度的散列值.在一定的强度上,它比MD5的强度更高.
二. 破解
早在05年的时候,我国的王小云教授成功的提出了MD5成功碰撞.(不同的原始数据得到相同的密文),继而又提出了sha1的碰撞,可是并无实例.
在2017年,谷歌成功的对sha1进行了碰撞,当时震动了世界,也就是说sha1算法不再那么安全.
其成功碰撞,能使用两个不同的原始数据得到相同的摘要.这个时候,如果有恶意攻击者使用这种冲突,用恶意文件来替换掉安全文件,而接收者通过相同的信息摘要,并不能识别出来文件的性质,可能造成严重的后果.
但是对于sha1的破解难度还是有一定的难度,需要相当的条件才能有具备这个能力.
下面的列出了一些数字,让大家了解破解这种算法所需要的计算规模有多大:
总计900万兆(即百万的五次幂,具体为9,223,372,036,854,775,808)次SHA1计算。
要完成攻击的首个阶段需要单一CPU计算6500年。
要完成攻击的第二阶段需要单一GPU计算110年。
md5:只需要一个智能手机30秒就破解了。
sha-1 shattered:110GPU 需要一年;
sha-1 bruteforce:12000000GPU 需要一年。
总之,就是也就只有谷歌这些云计算基础设施才能搞得定,不是谁都可以.而且后面还有更为安全的sha2算法.
所以从2017年1月发布的第56版开始,Chrome会将任何受SHA-1证书保护的网站视为不安全。 Firefox已计划于2017年初推出此功能,已于2017年2月24日淘汰了SHA-1。
三. 前端应用
1. crypto-js
功能强大,不止处理MD5,支持的模块非常多,star数目前6k+,前后端可用.
//后端 npm包管理 npm install crypto-js import sha256 from 'crypto-js/sha256'; import hmacSHA512 from 'crypto-js/hmac-sha512'; import Base64 from 'crypto-js/enc-base64'; const message, nonce, path, privateKey; // ... const hashDigest = sha256(nonce + message); const hmacDigest = Base64.stringify(hmacSHA512(path + hashDigest, privateKey)); //前端 Brower管理 bower install crypto-js
2. jsSHA
专注处理sha加密,目前star数1k+.能够处理sha家族(SHA-1,SHA-224,SHA3-224,SHA-256,SHA3-256,SHA-384,SHA3-384,SHA-512,SHA3-512,SHAKE128 ,和SHAKE256以及HMAC)
使用所需的哈希类型,输入类型和选项作为参数实例化新的jsSHA对象。哈希类型可以是SHA-1,SHA-224,SHA3-224,SHA-256,SHA3-256,SHA-384,SHA3-384,SHA-512,SHA3-512,SHAKE128或SHAKE256之一。输入类型可以是HEX,TEXT,B64,BYTES或ARRAYBUFFER之一。然后,您可以使用update对象函数对输入进行流式处理,如果需要,可以多次调用它。最后,只需getHash使用输出类型作为参数调用(B64,HEX,BYTES或ARRAYBUFFER)。
npm install jssha //引用 jsSHA = require("jssha"); //使用 var shaObj = new jsSHA("SHA-512", "TEXT"); shaObj.update("This is a "); shaObj.update("test"); var hash = shaObj.getHash("HEX");
以上所述就是小编给大家介绍的《「 加密算法 」SHA》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据结构及应用算法教程
2011-5 / 45.00元
《数据结构及应用算法教程(修订版)》从数据类型的角度,分别讨论了四大类型的数据结构的逻辑特性、存储表示及其应用。此外,还专辟一章,以若干实例阐述以抽象数据类型为中心的程序设计方法。书中每一章后都配有适量的习题,以供读者复习提高之用。第1~9章还专门设有“解题指导与示例”一节内容,不仅给出答案,对大部分题目提供了详尽的解答注释;其中的一些算法题还给出了多种解法。书中主要算法和最后一章的实例中的全部程......一起来看看 《数据结构及应用算法教程》 这本书的介绍吧!