Java实现的AES加解密程序
来源:互联网 发布:vue.js webpack 部署 编辑:程序博客网 时间:2024/05/16 02:07
在工作中会经常遇到密码加密,URL传参要进行加密,在此我参照一个例子将用java实现的AES加解密程序用实例写出。具体的参照可以参照如下的链接http://www.code2learn.com/2011/06/encryption-and-decryption-of-data-using.html
首先给出具体的加解密代码,
AESencrp.java
package com.security;import java.security.Key;import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;/** * 用来进行AES的加密和解密程序 * * @author Steven * */public class AESencrp {// 加密算法private String ALGO;// 加密密钥// private static final byte[] keyValue = new byte[] { 'T', 'h', 'e',// 'B','e', 's', 't', 'S', 'e', 'c', 'r', 'e', 't', 'K', 'e', 'y' };// 16位的加密密钥private byte[] keyValue;/** * 用来进行加密的操作 * * @param Data * @return * @throws Exception */public String encrypt(String Data) throws Exception {Key key = generateKey();Cipher c = Cipher.getInstance(ALGO);c.init(Cipher.ENCRYPT_MODE, key);byte[] encVal = c.doFinal(Data.getBytes());String encryptedValue = new BASE64Encoder().encode(encVal);return encryptedValue;}/** * 用来进行解密的操作 * * @param encryptedData * @return * @throws Exception */public String decrypt(String encryptedData) throws Exception {Key key = generateKey();Cipher c = Cipher.getInstance(ALGO);c.init(Cipher.DECRYPT_MODE, key);byte[] decordedValue = new BASE64Decoder().decodeBuffer(encryptedData);byte[] decValue = c.doFinal(decordedValue);String decryptedValue = new String(decValue);return decryptedValue;}/** * 根据密钥和算法生成Key * * @return * @throws Exception */private Key generateKey() throws Exception {Key key = new SecretKeySpec(keyValue, ALGO);return key;}public String getALGO() {return ALGO;}public void setALGO(String aLGO) {ALGO = aLGO;}public byte[] getKeyValue() {return keyValue;}public void setKeyValue(byte[] keyValue) {this.keyValue = keyValue;}}这个是主要的加解密代码,而测试代码如下所示:
Checker.java
package com.security;/** * * @author Steven * */public class Checker {public static void main(String[] args) throws Exception {// 创建加解密AESencrp aes = new AESencrp();// 设置加解密算法aes.setALGO("AES");// 设置加解密密钥aes.setKeyValue("4E7FF1C1F04F4B36".getBytes());// 要进行加密的密码String password = "cat123@#steven";// 进行加密后的字符串String passwordEnc = aes.encrypt(password);String passwordDec = aes.decrypt(passwordEnc);System.out.println("原来的密码 : " + password);System.out.println("加密后的密码 : " + passwordEnc);System.out.println("解密后的原密码 : " + passwordDec);}}
在将代码copy到自己的开发环境中会出现以下错误情况,如图1所示:
图1
sun.misc.BASE64Encoder找不到jar包的解决方法
此时可以通过以下方式解决:
到Myeclipse或者Eclipse中选择Window-->Preferences-->Java-->Compiler-->Error/Warnings.然后做如图2设置:
图2
然后进行以java application进行运行测试,最终的结果如下所示:
原来的密码 : cat123@#steven加密后的密码 : YtJ1UpR0ZFA2SsKPv1i24g==解密后的原密码 : cat123@#steven
这时候就可以在你的项目中使用加解密来保证数据的安全了。
在此恭祝大家学习愉快!
13 2
- Java实现的AES加解密程序
- Java实现AES加解密
- java实现AES加解密
- java实现基于PKCS5Padding填充方式的AES加解密
- java实现基于PKCS7Padding填充方式的AES加解密
- 用java实现AES加解密算法
- java实现AES加密解密--数据加解密
- c 实现aes加解密
- C#实现AES加解密
- 完整的AES分组与文件的加解密功能程序实现
- AES加解密(java)
- java AES 加解密代码
- java AES对称加解密
- Java AES文件加解密
- Java使用AES加解密
- AES加解密int数组——Java C++实现
- php与java联调的aes加解密
- java的aes——base64加解密
- js正则函数match、exec、test、search、replace、split使用介绍 详细出处参考:http://www.jb51.net/article/28007.htm
- Linux 下 查看以及修改文件权限
- linux/unix命令详解之sed
- js获取select标签选中的值
- opencv在2010中的配置
- Java实现的AES加解密程序
- 关于json-lib 和hibernate一起使用的时候出现死循环的解决办法
- LLVM每日谈之十七 LLVM/Clang的学习的思考
- 异常来自 HRESULT:0x80040215
- javascript正则表达式模糊匹配IP地址
- Sqlite类库,基于framework 4.0框架
- 复习用递归求fib函数,感觉还是数组简单
- 我的android 第25天 - 使用ContentResolver操作ContentProvider中的数据
- jsp显示一对多的数据