常用加密 以及解密方法(包含测试方法) 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)); } }
相关文章推荐
- C#中常用的字符串加密,解密方法封装,包含只加密,不解密的方法
- 使用证书对数据进行签名、验签、加密、解密以及openssl的常用方法
- 常用的加密解密方法收藏
- Asp.Net常用加密解密方法
- C# 常用加密解密方法
- C# 常用字符串加密解密方法
- 常用加密解密方法
- C#中,常用的加密解密方法解析
- .net常用加密解密方法
- 转:Asp.Net常用加密解密方法
- C#开发中常用加密解密方法解析
- jquery实现登录加密的几种方法以及cookie存放加密/解密
- ASP.NET常用加密解密方法
- PHP的RSA加密解密方法以及开发接口使用
- AES加密以及解密的方法
- c#常用的加密解密方法
- java 常用方法的加密解密
- Java中常用加密/解密方法详解
- bitmap的一些常用操作:读图片文件、图片缩放和旋转、将图片二进制转化为bitmap,以及图片加密,解密
- php mcrypt启用、加密以及解密的方法介绍