对称加密算法
所有的对称加密都有一个共同的特点:加密和解密所用的密钥是相同的。
现代对称密码可以分为序列密码和分组密码两类:序列密码将明文中的每个字符单独加密后再组合成密文;而分组密码将原文分为若干个组,每个组进行整体加密,其最终加密结果依赖于同组的各位字符的具体内容。也就是说,分组加密的结果不仅受密钥影响,也会受到同组其他字符的影响。
序列密码
分组密码
序列密码的安全性看上去要更弱一些,但是由于序列密码只需要对单个位进行操作,因此运行速度比分组加密要快得多。目前的分组密码都比序列密码要更安全一点。在实际运用中最常被使用的是分组密码。这其中应用最经典和最广泛的就是数据加密标准(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加密