# 对称加密
常见算法: DES (opens new window)、3DES (opens new window)、AES (opens new window)、Blowfish (opens new window)、IDEA (opens new window)、RC5 (opens new window)、RC6 (opens new window)。
对称加密算法 是应用较早的加密算法,又称为 共享密钥加密算法。在 对称加密算法 中,使用的密钥只有一个,发送 和 接收 双方都使用这个密钥对数据进行 加密 和 解密。这就要求加密和解密方事先都必须知道加密的密钥。
过程
- 数据加密过程:在对称加密算法中,数据发送方 将 明文 (原始数据) 和 加密密钥 一起经过特殊 加密处理,生成复杂的 加密密文 进行发送。
- 数据解密过程:数据接收方 收到密文后,若想读取原数据,则需要使用 加密使用的密钥 及相同算法的 逆算法 对加密的密文进行解密,才能使其恢复成 可读明文。
场景:由于算法效率较高,一般用于对效率有要求的实时数据加密通信。比如在使用 VPN 或者代理进行 加密通信时,既要保证数据的保密性,又要保证不能有高的延迟,所以通常会使用对称加密算法。
# 非对称加密
常见算法:(RSA算法)
非对称加密算法,又称为 公开密钥加密算法。它需要两个密钥,一个称为公开密钥 (
publickey
),即 公钥,另一个称为 私有密钥 (privatekey
),即 私钥。因为 加密 和 解密 使用的是两个不同的密钥,所以这种算法称为 非对称加密算法。
过程
- 如果使用 公钥 对数据 进行加密,只有用对应的 私钥 才能 进行解密。
- 如果使用 私钥 对数据 进行加密,只有用对应的 公钥 才能 进行解密。
# 签名加密算法
# MD5
MD5
用的是 哈希函数,它的典型应用是对一段信息产生 信息摘要,以 防止被篡改。严格来说, MD5
不是一种 加密算法 而是 摘要算法。无论是多长的输入, MD5
都会输出长度为 128bits
的一个串 (通常用 16
进制 表示为 32
个字符)
# SHA1算法
SHA1
是和 MD5
一样流行的 消息摘要算法,然而 SHA1
比 MD5
的 安全性更强。对于长度小于 2^64
位的消息, SHA1
会产生一个 160
位的 消息摘要。基于 MD5
、 SHA1
的信息摘要特性以及 不可逆 (一般而言),可以被应用在检查 文件完整性 以及 数字签名 等场景。
# HMAC算法
HMAC 是密钥相关的 哈希运算消息认证码(Hash-based Message Authentication Code), HMAC 运算利用 哈希算法 ( MD5、 SHA1 等),以一个密钥 和 一个消息 为输入,生成一个 消息摘要 作为 输出。
HMAC 发送方 和 接收方 都有的 key 进行计算,而没有这把 key 的第三方,则是 无法计算 出正确的 散列值的,这样就可以 防止数据被篡改。
HMAC
算法实例在 多线程环境 下是 不安全的。但是需要在 多线程访问时,进行同步的辅助类,使用ThreadLocal
为 每个线程缓存 一个实例可以避免进行锁操作。
# DES算法
DES 加密算法是一种 分组密码,以 64 位为 分组对数据 加密,它的 密钥长度是 56 位,加密解密 用 同一算法。
DES 加密算法是对 密钥 进行保密,而 公开算法,包括加密和解密算法。这样,只有掌握了和发送方 相同密钥 的人才能解读由 DES加密算法加密的密文数据。因此,破译 DES 加密算法实际上就是 搜索密钥的编码。对于 56 位长度的 密钥来说,如果用 穷举法 来进行搜索的话,其运算次数为 2^56 次。
#
文章链接
https://blog.51cto.com/u_15080016/2620572