Java 对称加密DES、3DES、AES 算法
一、对称加密算法
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。(by 百度百科)
1、常用算法
在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
2、算法特征
- 1、加密方和解密方使用同一个密钥;
- 2、加密解密的速度比较快,适合数据比较长时的使用;
- 3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;
3、加密工具
- 1、openssl,它使用了libcrypto加密库、libssl库即TLS/SSL协议的实现库等。TLS/SSL是基于会话的、实现了身份认证、数据机密性和会话完整性的TLS/SSL库。openssl官网。
- 2、gpg
4、优缺点
对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。
对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
5、加解密通信模型
如下图
二、常用单向加密算法及实现代码
1、DES(Data Encryption Standard)
数据加密标准,速度较快,适用于加密大量数据的场合;
特点:密钥偏短(56位)、生命周期短(避免被破解);
Java实现:
1 | 1)生成密钥 |
2、3DES(Triple DES)
基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高;
缺点:处理速度较慢、密钥计算时间较长、加密效率不高
Java实现:
1 | 1)生成密钥 |
3、AES(Advanced Encryption Standard)
高级加密标准,是下一代的加密算法标准,速度快,安全级别高,支持128、192、256、512位密钥的加密;
特点:密钥建立时间短、灵敏性好、内存需求低、安全性高
1 | 1)生成密钥 |
注意:
- 1、秘钥key的长度,不能随便一个String
- 2、生成出的密文存在乱码,这是正常现象,解决方法再将密文进行base64编码,解密时先base64解码
三、使用Hutool工具类
Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。Hutool最初是我项目中“util”包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。
绝不重复造轮子,使用Hutool-crypto。
加密分为三种:
- 对称加密(symmetric),例如:AES、DES等
- 非对称加密(asymmetric),例如:RSA、DSA等
- 摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等
hutool-crypto针对这三种加密类型分别封装,并提供常用的大部分加密算法。
1、添加POM依赖
1 | <dependency> |
2、DES加密示例
1 | package cn.pconline; |
原文链接:
http://blog.csdn.net/smartbetter/article/details/54017759
PS: 9月10日,今天马云正式宣布,辞任阿里巴巴董事局主席。江湖再见~~