# 对称加密

常见算法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),即 私钥

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

过程

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

# 签名加密算法

# MD5

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

# SHA1算法

SHA1 是和 MD5 一样流行的 消息摘要算法,然而 SHA1MD5安全性更强。对于长度小于 2^64 位的消息, SHA1 会产生一个 160 位的 消息摘要。基于 MD5SHA1 的信息摘要特性以及 不可逆 (一般而言),可以被应用在检查 文件完整性 以及 数字签名 等场景。

# 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