• 最全的加解密算法实现原理深剖


    由于大学学的数学专业,自从进入密码学行业,对加解密算法的实现原理产生了深厚的兴趣,故写本系列文章对各种加解密算法原理进行深剖。

    加解密算法大致分为三大类:消息摘要算法/签名算法、对称加密(加密解密密钥相同)、非对称加密。

    1. 消息摘要算法/签名算法

    1.1 MD系列家族

      MD系列算法是信息摘要三大算法中的一种,全称:Message Digest算法,按照规范版本分为MD2、MD4、MD5三种算法,目前最常用的是MD5版本算法。

      1.1.1 md2算法

      1989 年,著名的非对称算法 RSA 发明人之一—麻省理工学院教授罗纳德·李维斯特(Ronald L.Rivest)开发了 MD2 算法。这个算法首先对信息进行数据补位,使信息的字节长度是 16 的倍数。再以一个 16 位的检验和作为补充信息追加到原信息的末尾。最后根据这个新产生的信息计算出一个 128 位的散列值,MD2 算法由此诞生。

      有关MD2算法详情请参见RFC1319: http://www.ietf.org/rfc/rfc1319.txt

      md2算法实现原理深剖

      1.1.2 md4算法

      1990 年,罗纳德·李维斯特教授开发出较之 MD2 算法有着更高安全性的 MD4 算法。在这个算法中,我们仍需对信息进行数据补位。不同的是,这种补位使其信息的字节长度加上 448 个字节后能成为 512 的倍数(信息字节长度 mod 512 = 448)。此外,关于 MD4 算法的处理与 MD2 算法又有很大差别。但最终仍旧是会获得一个 128 位的散列值。MD4 算法对后续消息摘要算法起到了推动作用,许多比较有名的消息摘要算法都是在 MD4 算法的基础上发展而来的,如 MD5、SHA-1、RIPE-MD 和 HAVAL 算法等。

      有关MD4算法详情请参见RFC1320: http://www.ietf.org/rfc/rfc1320.txt

      md4算法实现原理深剖

      1.1.3 md5算法

      1991年,继 MD4 算法后,罗纳德·李维斯特教授开发了 MD5 算法,将 MD 算法推向成熟。MD5 算法经 MD2、MD3 和 MD4 算法发展而来,算法复杂程度和安全强度大大提高。但不管是 MD2、MD4 还是 MD5 算法,其算法的最终结果均是产生一个 128 位的消息摘要,这也是 MD 系列算法的特点。MD5 算法执行效率略次于 MD4 算法,但在安全性方面,MD5 算法更胜一筹。随着计算机技术的发展和计算水平的不断提高,MD5 算法暴露出来的漏洞也越来越多。1996 年后被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如 SHA-2。2004 年,证实 MD5 算法无法防止碰撞(collision),因此不适用于安全性认证,如 SSL 公开密钥认证或是数字签名等用途。

      有关MD5算法详情请参见RFC1321: http://www.ietf.org/rfc/rfc1321.txt

      md5算法实现原理深剖

    1.2 SHA系列家族

       SHA (Security Hash Algorithm) 是美国的 NIST 和 NSA 设计的一种标准的 Hash 算法,SHA 用于数字签名的标准算法的 DSS 中,也是安全性很高的一种 Hash 算法。

      1.2.1 sha1算法

      SHA1  是第一代 SHA 算法标准,是一种安全性很高的哈希算法,也是校验算法,可用于校验文件的完整性。SHA1 可处理原始报文长度不能超过2的64次方,然后SHA1生成160位(20byte)的报文摘要。SHA1 算法简单而且紧凑,容易在计算机上实现。

      SHA1 与 MD4 相比较而言,主要增加了扩展变换,将前一轮的输出也加到了下一轮,这样增加了雪崩效应,而且由于其 160 Bits 的输出,对穷举攻击更具有抵抗性。

      有关SHA1算法详情请参见RFC3174: http://www.ietf.org/rfc/rfc3174.txt

       sha1算法实现原理深剖

      1.2.2 sha2算法

      SHA-2 又可以再分为六个不同的算法标准。其中包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。这些变体除了生成摘要的长度、循环运行的次数等一些微小差异外,算法的基本结构是一致的。

      有关 SHA2 算法详情请参见 NIST.FIPS.180-4 。

      1.2.2.1 sha2-224算法

      sha2-224算法实现原理深剖

      1.2.2.2 sha2-256算法

       sha2-256算法实现原理深剖

      1.2.2.3 sha2-384算法

       sha2-384算法实现原理深剖 

      1.2.2.4 sha2-512算法

       sha2-512算法实现原理深剖 

      1.2.2.5 sha2-512/224算法

       sha2-512/224算法实现原理深剖

      1.2.2.5 sha2-512/256算法

       sha2-512/256算法实现原理深剖

      1.2.3 sha3算法

       SHA-3 算法是第三代标准的哈希函数,基于 Keccak 算法实现。与之前的哈希算法有所不同,SHA-3 算法是基于置换 ( permutation-based ) 的加密函数。

      1.2.3.1 sha3-224算法

      

      1.2.3.2 sha3-256算法

      

      1.2.3.3 sha3-384算法

     

      1.2.3.4 sha3-512算法

  • 相关阅读:
    怎样用Android Studio打多包名APK
    u-boot-2014.04移植FL2440(使用eclipse编辑uboot)
    power of two
    javascript的prototype经典使用场景
    git创建与管理远程分支【转】
    error:Flash Download failed-“Cortex-M3”,“Programming Algorithm”【转】
    内核签名【转】
    Android系统Recovery模式的工作原理【转】
    Android系统Recovery工作原理之使用update.zip升级过程分析(三)【转】
    Recovery模式【转】
  • 原文地址:https://www.cnblogs.com/Kingfans/p/16546386.html
Copyright © 2020-2023  润新知