加密算法技术原理浅析

在如今的信息安全领域,有各种各样的加密算法凝聚了计算机科学家门的智慧。从宏观上来看,这些加密算法可以归结为三大类:散列算法对称加密算法非对称加密算法

单向散列加密

散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。单向散列函数一般用于产生消息摘要,密钥加密等,常见的有: MD5, SHA。

MD5

简介 : Message Digest Algorithm MD5(即消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。

MD5 用的是 哈希函数,它的典型应用是对一段信息产生 信息摘要,以 防止被篡改。严格来说,MD5 不是一种 加密算法 而是 摘要算法。无论是多长的输入,MD5 都会输出长度为 128bits 的一个串 (通常用 16 进制 表示为 32 个字符)。

特点:

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

应用:一致性验证,数字签名,安全访问认证。

弱点:目前已经可以暴力破解 MD5 的值了,即逆推回去。并且从理论上来说 MD5 并不是绝对的唯一,所以在某些极限条件下还是会出现重复的情况的。

PHP md5() 函数,语法:md5(string, raw)

参数解析:

  • string:必需。规定要计算的字符串。
  • raw:可选。规定十六进制或二进制输出格式。
    • TRUE – 原始 16 字符二进制格式
    • FALSE – 默认。32 字符十六进制数

SHA-1哈希算法

哈希算法一般指SHA家族,SHA(Secure Hash Algorithm ,安全散列算法)家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512。

SHA1 是和 MD5 一样流行的 消息摘要算法,然而 SHA1 比 MD5 的 安全性更强。

PHP sha1() 函数,语法:sha1(string, raw)

参数解析:

  • string:必需。规定要计算的字符串。
  • raw:可选。规定十六进制或二进制输出格式。
    • TRUE – 原始 20 字符二进制格式
    • FALSE – 默认。40 字符十六进制数

对称加密

对称加密算法 是应用较早的加密算法,又称为 共享密钥加密算法。在 对称加密算法 中,使用的密钥只有一个,发送 和 接收 双方都使用这个密钥对数据进行 加密 和 解密。这就要求加密和解密方事先都必须知道加密的密钥。

常见的对称加密算法主要有 DES3DESAES 等。

加密算法技术原理浅析

数据加密过程:在对称加密算法中,数据发送方 将 明文 (原始数据) 和 加密密钥 一起经过特殊 加密处理,生成复杂的 加密密文 进行发送。

数据解密过程:数据接收方 收到密文后,若想读取原数据,则需要使用 加密使用的密钥 及相同算法的 逆算法 对加密的密文进行解密,才能使其恢复成 可读明文。

AES算法

AES 加密算法是密码学中的 高级加密标准,该加密算法采用 对称分组密码体制,密钥长度的最少支持为 128 位192 位256 位,分组长度 128 位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的 区块加密标准。

AES 本身就是为了取代 DES 的,AES 具有更好的 安全性、效率 和 灵活性。

非对称加密

非对称加密算法,又称为 公开密钥加密算法。它需要两个密钥,一个称为 公开密钥 (public key),即 公钥,另一个称为 私有密钥(private key),即 私钥。

因为 加密 和 解密 使用的是两个不同的密钥,所以这种算法称为 非对称加密算法。

常见的 非对称算法 主要有 RSADSA 等。

加密算法技术原理浅析

  1. 如果使用 公钥 对数据 进行加密,只有用对应的 私钥 才能 进行解密
  2. 如果使用 私钥 对数据 进行加密,只有用对应的 公钥 才能 进行解密

虽然 非对称加密 安全性更高,但是速度比较慢,所以目前最通用的方案是:将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。

RSA算法

RSA 加密算法是目前最有影响力的 公钥加密算法,并且被普遍认为是目前 最优秀的公钥方案 之一。

RSA 是第一个能同时用于 加密 和 数字签名 的算法,它能够 抵抗 到目前为止已知的 所有密码攻击,已被 ISO 推荐为公钥数据加密标准。

各种加密算法对比

散列算法比较

名称 安全性 速度
SHA-1
MD5

对称加密算法比较

名称 密钥名称 运行速度 安全性 资源消耗
DES 56位 较快
3DES 112位或168位
AES 128、192、256位

非对称加密算法比较

名称 成熟度 安全性 运算速度 资源消耗
RSA
ECC

参考文章: