「 加密算法 」SHA

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

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

查看所有标签

猜你喜欢:

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

数字麦克卢汉

数字麦克卢汉

(美)保罗﹒莱文森(Paul Levinson) / 何道宽 / 社会科学文献出版社 / 2001年 / 20.0

本书是一本三合一的书。既是麦克卢汉评传,又是一部专著,而且是让网民“扫盲”和提高的指南。 《数字麦克卢汉》实际上有两个平行的主题和任务。一个是批评和张扬麦克卢汉。另一个是写作者自己的思想。它“不仅谋求提供进入数字时代的向导……而且谋求证明麦克卢汉思想隐而不显的准确性。为了完成这个双重任务,本书的每一章都试图阐明麦克卢汉的一种重要的洞见、原则或概念。与此同时,它试图揭示麦克卢汉告诉我们一些什么......一起来看看 《数字麦克卢汉》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具