「 加密算法 」SHA

栏目: 编程工具 · 发布时间: 6年前

内容简介:SHA-1,哈希(Hash)算法,一个非常流行的加密散列函数。在许多安全协议中广为使用,通常被用做密码加密,文件校验等,曾被视为MD5的后继者,且存在不可逆性.(和MD5同为MD4导出,所以具备一定的相似性)

「 加密算法 」SHA

一. 简介

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+,前后端可用.

「 加密算法 」SHA

//后端 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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Developing Large Web Applications

Developing Large Web Applications

Kyle Loudon / Yahoo Press / 2010-3-15 / USD 34.99

As web applications grow, so do the challenges. These applications need to live up to demanding performance requirements, and be reliable around the clock every day of the year. And they need to withs......一起来看看 《Developing Large Web Applications》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试