您的位置:首页 > 其它

常用加密 以及解密方法(包含测试方法) DES Base64 AES

2017-08-18 20:46 501 查看
这个加密算法在我们实际工作中经常需要用到,所以小编在课余时间学习了一下,简单写了一个测试类,当然,实际开发中我们需要使用随机数产生key,还有在登录中加密都需要使用传输加密等等,这里面代码都有注释,简单易懂

package com.yinkailong.cems.utils;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decoder;

/**
*   <B>说       明</B>:AEC加密解密工具
*
* @author  作  者  名:xxx<br/>
*          E-mail :miaohongbo@vrvmail.com.cn

* @version 版   本  号:V1.0.<br/>
*          创建时间:2016年3月23日 下午12:24:39
*/
@SuppressWarnings("restriction")
public class AecUtil{
/**
* 加密  DES  Base64   AES   秘钥
* @param password 待加密密码
* @param key key值
* @return
* @throws Exception
*/
public static String encrypt(String password , String key) throws Exception {
try {

String iv = key;
//创建秘钥器
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
//得到密码的字节数   dataBytes字符串转化为字节数组
byte[] dataBytes = password.getBytes();
//得到plaintextLength 的长度
int plaintextLength = dataBytes.length;
//创建一个数组  长度为 plaintextLength
byte[] plaintext = new byte[plaintextLength];
System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
//生成秘钥   使用AES加密算法
SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");

IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
//初始化
cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
//将加密后的   密码加密后的字节数组      便于存储       正式执行加密算法
byte[] encrypted = cipher.doFinal(plaintext);
//在进行Base64进行加密
return new sun.misc.BASE64Encoder().encode(encrypted);

} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 解密
* @param password 待解密密码
* @param key key值
* @return
* @throws Exception
*/
public static String desEncrypt(String password , String key) throws Exception {
try{
String iv = key;

byte[] encrypted1 = new BASE64Decoder().decodeBuffer(password);

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());

cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);

byte[] original = cipher.doFinal(encrypted1);
String originalString = new String(original);
return originalString;
}
catch (Exception e) {
e.printStackTrace();
return null;
}
}

public static void main(String args[]) throws Exception {
String data = "123456";
String key = "1234567812345678";
//调用该算法进行加密
String s=encrypt(data , key);
System.out.println(s);
//使用该秘钥进行解密
System.out.println(desEncrypt(s,key));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  加密 base64 解密 DES AES