zoukankan      html  css  js  c++  java
  • SHA256

    首先SHA256 和HMAC-SHA256是不一样的,HMAC-SHA256需要密钥生成摘要,而SHA256不需要。

    简述SHA-256算法的安全性 作者:ice 转载并学习。

    SHA安全加密标准,是至今世界上使用最广泛且安全的压缩算法之一,随着密码学研究的不断深入和计算机技术的快速发展,SHA-256算法得到全面推广应用。

    SHA-256算法使用了一组6个逻辑函数及一组常数K ,采用512比特的消息块,每一个消息块X分成16个32比特的字M0,M1,….M15 。下面来看一下SHA-256指的计算过程。

    1、初始化:

    简述SHA-256算法的安全性

    2、准备消息列表

    简述SHA-256算法的安全性

    3、用每一轮的散列值的中间结果初始化8个工作变量A、B、C、D、E、F、G、H。初始定义由H0(0)-H7(7)给出。

    4、对于0≤t≤63,执行(即压缩函数):

    T1=H+∑1{256}(e)+Ch(e,f,g)+Kt{256}+Wt

    T2=∑0{256}(a)+Maj(a,b,c)

    H=g g=h e=d+T1 d=c c=b b=a a=T1+T2

    5、每个分组的中间散列值的计算方法:

    H0(i)=a+H0(i-j), H1(i)=b+H1(i-j), H2(i)=c+H2(i-j), H3(i)=d+H3(i-j), H4(i)=e+H4(i-j), H5(i)=f+H5(i-j), H6(i)=g+H6(i-j), H7(i)=h+H7(i-j)

    这里i是指消息的第i个分组,将所有的分组处理完毕后,最后输出256比特的Hash值:H0(N) | | H1(N) | | H2(N) | | H3(N) | | H4(N) | | H5(N) H6(N) | | H7(N)

    算法中使用的6个逻辑函数:

    简述SHA-256算法的安全性

    SHA-256的安全性

    Hash函数的安全性很大程度上取决于抗强碰撞的能力,即攻击者找出两个涓息M和MtM≠Mt,使得H(M)=HM ,因此,评价一个Hash函数的安全性,就是看攻击者在现有的条件下,是否可以找到该函数的一对碰撞。目前已有的对Hash函数攻击的方法包括生日攻击、彩虹表攻击、差分攻击等。

    生日攻击:生日攻击是一种可用于攻击任何类型函数Hash函数的攻击方法。从攻击原理上看,它没有利用Hash函数的结构和任何代数弱性质,只依赖与Hash值的长度。因此,抵御生日攻击最有效的方法是Hash值必须有足够的长度。

    差分攻击:差分攻击是目前破译迭代Hash函数最有效的手法之一,其基本方法是利用明文的输入差值对输出差值的影响,运用差分的高概率的继承或者消除来产生最终的相同输出。

    用于消息唯一性和数据完整性验证的Hash函数,其安全性依赖于函数本身的属性和对抗碰撞的抵抗。Hash函数的算法结构特点和Hash值的长度是决定函数碰撞性的而主要因素,Hash值越长,越能抵御生日攻击。SHA-256有256比特Hash值,MD5和SHA-1分别有128和160比特的Hash值。因此,SHA-256比MD5和SHA-1能抵抗生日攻击。通过对Chabaud-Joux攻击SHA-256的分析,找到了SHA-256的一个部分碰撞,其复杂度为266,但无法找到SHA-256的一个整体碰撞,因此SHA-256算法也能抵御现有的差分攻击。由此可见,在抵御生日攻击和抵御已知差分攻击方面,SHA-256算法比现在广泛使用的MD5和SHA-1等更具安全性。

  • 相关阅读:
    HDU 4348 To the moon(可持久化线段树)
    HDU 5875 Function 大连网络赛 线段树
    HDU 5877 2016大连网络赛 Weak Pair(树状数组,线段树,动态开点,启发式合并,可持久化线段树)
    HDU 5876 大连网络赛 Sparse Graph
    HDU 5701 中位数计数 百度之星初赛
    CodeForces 708B Recover the String
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    ASP.NET生成验证码
    ASP.NET生成验证码
    ASP.NET生成验证码
  • 原文地址:https://www.cnblogs.com/rookieDanny/p/8087379.html
Copyright © 2011-2022 走看看