对称加密算法
所有的对称加密都有一个共同的特点:加密和解密所用的密钥是相同的。
现代对称密码可以分为序列密码和分组密码两类:序列密码将明文中的每个字符单独加密后再组合成密文;而分组密码将原文分为若干个组,每个组进行整体加密,其最终加密结果依赖于同组的各位字符的具体内容。也就是说,分组加密的结果不仅受密钥影响,也会受到同组其他字符的影响。
序列密码
分组密码
序列密码的安全性看上去要更弱一些,但是由于序列密码只需要对单个位进行操作,因此运行速度比分组加密要快得多。目前的分组密码都比序列密码要更安全一点。在实际运用中最常被使用的是分组密码。这其中应用最经典和最广泛的就是数据加密标准(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也不推荐使用了
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。