常用加密 以及解密方法(包含测试方法) DES Base64 AES
来源:互联网 发布:中行外汇行情分析软件 编辑:程序博客网 时间:2024/06/07 02:01
这个加密算法在我们实际工作中经常需要用到,所以小编在课余时间学习了一下,简单写了一个测试类,当然,实际开发中我们需要使用随机数产生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)); }}
阅读全文
0 0
- 常用加密 以及解密方法(包含测试方法) DES Base64 AES
- 3des,aes,md5加密解密方法
- DES、AES加密解密的方法
- DES+Base64 加密解密的方法
- DES+Base64 加密解密的方法
- IOS 加密解密(AES、DES、base64、md5)
- iOS常用加密方法(aes、md5、base64)
- iOS常用加密方法(aes、md5、base64)
- iOS常用加密方法(aes、md5、base64)
- iOS常用加密方法(aes、md5、base64)
- iOS常用加密方法(aes、md5、base64)
- iOS常用加密方法(aes、md5、base64)
- iOS开发之常用加密方法(aes、md5、base64)
- iOS常用加密方法(aes、md5、base64)
- IOS开发之----常用加密方法(AES、MD5、Base64)
- iOS常用加密方法(aes、md5、base64)
- iOS常用加密方法(aes、md5、base64)
- iOS常用加密方法(aes、md5、base64)
- Git与github的使用
- 8月18日训练笔记
- map 迭代器的遍历
- springMVC详解(上)
- 质数
- 常用加密 以及解密方法(包含测试方法) DES Base64 AES
- 51Nod 1686(第K大区间)
- [编程题] 堆棋子
- 斐波那契数列
- 图的基本存储的基本方式一(邻接矩阵)
- CodeForces
- LeetCode No.24 Swap Nodes in Pairs
- 最简单的条件判断程序
- hdu 6133 树状数组+分类讨论