区块链中的密码学系列之SHA256算法(三)

1. 前言

SHA系列算法是一种密码散列函数,由美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。现在已经被破解。

我们本文主要研究SHA256算法。

2. 什么是SHA ?

SHA算法的名称是安全散列算法,英文名称是Secure Hash Algorithm。

SHA算法分为很多版本。可以分为SHA-1和SHA-2两大类。其中SHA-2的子版本包括SHA-224,SHA-256,SHA-384,SHA-512,其输出结果分别为224、256、384、512位。与之对应的MD5算法的输出只有128位。

3. SHA256算法的特点

SHA算法具有以下特点:

  • 压缩性:任意长度的数据,算出的SHA256值长度都是固定的。
  • 容易计算:从原数据计算出SHA256值很容易。
  • 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的SHA256值都有很大区别。
  • 强抗碰撞:已知原数据和其SHA256值,想找到一个具有相同SHA256值的数据(即伪造数据)是非常困难的。

可以看到,这些特性和前面学习的MD5算法区块链中的密码学系列之MD5算法(二)十分的相似。除此之外SHA256相比于MD5算法还具有优势。我们来看:

  • 2的128次方为340282366920938463463374607431768211456,也就是10的39次方级别
  • 2的160次方为1.4615016373309029182036848327163e+48,也就是10的48次方级别
  • 2的256次方为1.1579208923731619542357098500869 × 10的77次方,也就是10的77次方

​ 宇宙中原子数大约在10的60次方到80次方之间,所以2的256次方有足够的空间容纳所有的可能,算法好的情况下冲突碰撞的概率很低。

此外,我们还可以将SHA256和MD5进行混合使用,我们可以取MD5摘要的一部分和SHA256摘要的一部分,拼成一个合成摘要。这样别人不知道规则,自然无从破解。

4. SHA256算法的底层原理

4.1 MD5的原理和SHA原理的对比

MD5把128bit的信息摘要分成A,B,C,D四段(Words),每段32bit,在循环过程中交替运算A,B,C,D,最终组成128bit的摘要结果。如下图所示:

image-20190327110312560

img

SHA-1算法,核心过程大同小异,主要的不同点是把160bit的信息摘要分成了A,B,C,D,E五段。

image-20190327110351529

SHA-2系列算法,核心过程更复杂一些,把信息摘要分成了A,B,C,D,E,F,G,H八段。

image-20190327110404209

MD5算法大概可以分为以下四步:原文处理,设置初始值,循环加工,拼接结果。下面我们进行详细的分析。

4.2设置初始值

SHA256算法中用到了8个哈希初值以及64个哈希

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值