加密算法技术原理浅析
在如今的信息安全领域,有各种各样的加密算法凝聚了计算机科学家门的智慧。从宏观上来看,这些加密算法可以归结为三大类:散列算法、对称加密算法、非对称加密算法。
单向散列加密
散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。单向散列函数一般用于产生消息摘要,密钥加密等,常见的有: 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 字符十六进制数
对称加密
对称加密算法 是应用较早的加密算法,又称为 共享密钥加密算法。在 对称加密算法 中,使用的密钥只有一个,发送 和 接收 双方都使用这个密钥对数据进行 加密 和 解密。这就要求加密和解密方事先都必须知道加密的密钥。
常见的对称加密算法主要有 DES、3DES、AES 等。
数据加密过程:在对称加密算法中,数据发送方 将 明文 (原始数据) 和 加密密钥 一起经过特殊 加密处理,生成复杂的 加密密文 进行发送。
数据解密过程:数据接收方 收到密文后,若想读取原数据,则需要使用 加密使用的密钥 及相同算法的 逆算法 对加密的密文进行解密,才能使其恢复成 可读明文。
AES算法
AES 加密算法是密码学中的 高级加密标准,该加密算法采用 对称分组密码体制,密钥长度的最少支持为 128 位、 192 位、256 位,分组长度 128 位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的 区块加密标准。
AES 本身就是为了取代 DES 的,AES 具有更好的 安全性、效率 和 灵活性。
非对称加密
非对称加密算法,又称为 公开密钥加密算法。它需要两个密钥,一个称为 公开密钥 (public key),即 公钥,另一个称为 私有密钥(private key),即 私钥。
因为 加密 和 解密 使用的是两个不同的密钥,所以这种算法称为 非对称加密算法。
常见的 非对称算法 主要有 RSA、DSA 等。
- 如果使用 公钥 对数据 进行加密,只有用对应的 私钥 才能 进行解密。
- 如果使用 私钥 对数据 进行加密,只有用对应的 公钥 才能 进行解密。
虽然 非对称加密 安全性更高,但是速度比较慢,所以目前最通用的方案是:将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。
RSA算法
RSA 加密算法是目前最有影响力的 公钥加密算法,并且被普遍认为是目前 最优秀的公钥方案 之一。
RSA 是第一个能同时用于 加密 和 数字签名 的算法,它能够 抵抗 到目前为止已知的 所有密码攻击,已被 ISO 推荐为公钥数据加密标准。
各种加密算法对比
散列算法比较
名称 | 安全性 | 速度 |
---|---|---|
SHA-1 | 高 | 慢 |
MD5 | 中 | 快 |
对称加密算法比较
名称 | 密钥名称 | 运行速度 | 安全性 | 资源消耗 |
---|---|---|---|---|
DES | 56位 | 较快 | 低 | 中 |
3DES | 112位或168位 | 慢 | 中 | 高 |
AES | 128、192、256位 | 快 | 高 | 低 |
非对称加密算法比较
名称 | 成熟度 | 安全性 | 运算速度 | 资源消耗 |
---|---|---|---|---|
RSA | 高 | 高 | 中 | 中 |
ECC | 高 | 高 | 慢 | 高 |
参考文章:
- 1、百度百科:加密算法
- 2、浅谈常见的七种加密算法及实现