对称加密算法

  • Post author:
  • Post category:其他


对称加密算法

所有的对称加密都有一个共同的特点:加密和解密所用的密钥是相同的。

现代对称密码可以分为序列密码和分组密码两类:序列密码将明文中的每个字符单独加密后再组合成密文;而分组密码将原文分为若干个组,每个组进行整体加密,其最终加密结果依赖于同组的各位字符的具体内容。也就是说,分组加密的结果不仅受密钥影响,也会受到同组其他字符的影响。

序列密码

分组密码

序列密码的安全性看上去要更弱一些,但是由于序列密码只需要对单个位进行操作,因此运行速度比分组加密要快得多。目前的分组密码都比序列密码要更安全一点。在实际运用中最常被使用的是分组密码。这其中应用最经典和最广泛的就是数据加密标准(DES)和高级加密标准(AES)。

在对称加密算法中常用的算法有:

DES



3DES

、AES、TDEA、

Blowfish

、RC2等。DES加密与AES加密其算法特征为:

明文 <-> 密钥 <-> 密文

所以和非对称加密最大的不同就是它能通过密钥“倒推”解密。

常见三种对称加密算法对比图如下:

  • DES加密算法:1977年美国标准局(NBS)发布的数据加密标准(DES),并且在20年内都是美国政府所使用的标准加密方式。它是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。但不幸的是2000年高级加密标准AES出来后它就被干掉了。
  • 3DES(Triple DES):是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高;
  • AES加密算法:AES至今仍然是最强大的对称加密算法,目前还不存在从技术上有效破解AES的方法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准,AES标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

使用DES/AES加密时需要了解一些参数:

  • 密钥长度:128-bit、192-bit、256-bit
  • 加密模式:CBC、ECB、CFB、OFB、CTR
  • 填充方式:pkcs5padding、pkcs7padding、zeropadding、iso1026、ansix923
  • 加密结果编码方式:base64编码、16进制编码

无论什么语言平台,AES的算法总是相同的,但加密时设置的参数不一致会导致加密的结果不同,但都能用同一密钥解密出同一个明文。

验证:

在线DES/AES加密

Github地址:https://github.com/kumataahh

五种对称加密

1、DES

已破解,不再安全,基本没有企业在用了



对称加密

算法的基石,具有学习价值


密钥

长度56(JDK)、56/64(BC)

2、DESede(三重DES)

早于AES出现来替代DES

计算密钥时间太长、加密效率不高,所以也基本上不用

密钥长度112/168(JDK)、128/192(BC)

3、AES

最常用的对称加密算法

密钥建立时间短、灵敏性好、

内存

需求低(不管怎样,反正就是好)

实际使用中,使用工作模式为CTR(最好用BC去实现),此工作模式需要引入IV参数(16位的字节数组)

密钥长度128/192/256,其中192与256需要配置无政策限制权限文件(JDK6)

填充模式最常用的两种PKCS5Padding和PKCS7Padding,其中后者只有BC独有。

4、IDEA

常用的电子邮件加密算法

工作模式只有ECB

密钥长度128位

5、PBE

综合了消息摘要算法和对称加密算法,最常见的是PBEWithMD5AndDES

工作模式只有CBC(已丧失安全性,不推荐使用),所以PBE也不推荐使用了