AESEncrypter加密算法代码示例
package testJava.java; import java.security.SecureRandom;
import java.util.Base64; import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec; /**
* @Author xx
* @Date 2014年3月26日
* @Comments (美国软件出口限制,AES算法,秘钥长度大于128位时需替换对应jdk版本的policy文件: ${java_home}/jre/lib/security/local_policy.jar 和 ${java_home}/jre/lib/security/US_export_policy.jar)
*/
public class AESEncrypter {
private static final String ENCODEING = "UTF-8";
private static final String ALGORITHM = "AES";
private static final String KEY = "2016aes"; private static Cipher cipher_encrypt = null;//加密密码器
private static Cipher cipher_decrypt = null;//解密密码器 static{
try {
KeyGenerator kgen = KeyGenerator.getInstance(ALGORITHM);
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG" );
secureRandom.setSeed(KEY.getBytes());
kgen.init(128, secureRandom);
//kgen.init(256, secureRandom);//256位长度秘钥
SecretKey secretKey = kgen.generateKey();
byte[] secretKeyEncoded = secretKey.getEncoded();
SecretKeySpec sks = new SecretKeySpec(secretKeyEncoded, ALGORITHM);
cipher_encrypt = Cipher.getInstance(ALGORITHM);
cipher_encrypt.init(Cipher.ENCRYPT_MODE, sks);
cipher_decrypt = Cipher.getInstance(ALGORITHM);
cipher_decrypt.init(Cipher.DECRYPT_MODE, sks);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 加密
* @param content 需要加密的内容
* @return
*/
public static String encrypt(String content) throws Exception{
byte[] result = cipher_encrypt.doFinal(content.getBytes(ENCODEING));
// return Base64.encodeBase64String(result);
return new String(Base64.getEncoder().encode(result));
} /**
* 解密
* @param content
* @return
* @throws Exception
*/
public static String decrypt(String content) throws Exception {
byte[] result = cipher_decrypt.doFinal(Base64.getDecoder().decode(content));
// byte[] result = cipher_decrypt.doFinal(Base64.decodeBase64(content));
return new String(result,ENCODEING);
} /**
* 对字符串数组里的字符串加密
* @param content
* @return
* @throws Exception
*/
public static String[] encryptStrArray(String ...content) throws Exception{
for (int i = 0; i < content.length; i++) {
byte[] result = cipher_encrypt.doFinal(content[i].getBytes(ENCODEING));
// String encryptedStr = Base64.encodeBase64String(result);
String encryptedStr = new String(Base64.getEncoder().encode(result));
content[i] = encryptedStr;
}
return content;
} public static void main(String[] args) throws Exception {
String content = "公布修改五部法律"; //加密
System.out.println("加密前:" + content);
String codeStr = encrypt(content);
System.out.println("加密后:" + codeStr);
System.out.println("加密后 length:" + codeStr.getBytes("UTF-8").length);
//解密
String decryptResult = decrypt(codeStr);
System.out.println("解密后:" + decryptResult); System.out.println("done!");
}
/**
* 加密前:公布修改五部法律
加密后:B2Pu0KBO/FGuttUxSpT9/544jgp4OEoL8L4o4N85a0I=
加密后 length:44
解密后:公布修改五部法律
done!
*/ }
AESEncrypter加密算法代码示例的更多相关文章
- 高级渲染技巧和代码示例 GPU Pro 7
下载代码示例 移动设备正呈现着像素越来越高,屏幕尺寸越来越小的发展趋势. 由于像素着色的能耗非常大,因此 DPI 的增加以及移动设备固有的功耗受限环境为降低像素着色成本带来了巨大的压力. MSAA 有 ...
- Java8-Function使用及Groovy闭包的代码示例
导航 定位 概述 代码示例 Java-Function Groovy闭包 定位 本文适用于想要了解Java8 Function接口编程及闭包表达式的筒鞋. 概述 在实际开发中,常常遇到使用模板模式的场 ...
- [IOS 开发] 懒加载 (延迟加载) 的基本方式,好处,代码示例
懒加载的好处: 1> 不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强 2> 每个属性的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合 ...
- SELECT控件操作的JS代码示例
SELECT控件操作的JS代码示例 1 检测是否有选中 if(objSelect.selectedIndex > -1) { //说明选中 } else { //说明没有选中 } 2.动态创建s ...
- 转:HIBERNATE一些_方法_@注解_代码示例---写的非常好
HIBERNATE一些_方法_@注解_代码示例操作数据库7步骤 : 1 创建一个SessionFactory对象 2 创建Session对象 3 开启事务Transaction : hibernate ...
- Python实现各种排序算法的代码示例总结
Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示 ...
- C#与数据库访问技术总结(十五)之 DataAdapter对象代码示例
DataAdapter对象代码示例 下面的代码将说明如何利用DataAdapter对象填充DataSet对象. private static string strConnect=" data ...
- C#与数据库访问技术总结(六)之Command对象创建SQl语句代码示例
Command对象创建SQl语句代码示例 说明:前面介绍了 Command 对象的方法和一些属性,回顾一下 Command对象主要用来执行SQL语句.利用Command对象,可以查询数据和修改数据. ...
- 领域驱动开发推荐代码示例 — Microsoft NLayerApp
简介: Microsoft NLayerApp是由微软西班牙团队出品的基于.NET 4.0的“面向领域N层分布式架构”代码示例,在codeplex上的地址是:http://microsoftnlaye ...
随机推荐
- POJ--1416
#include <stdio.h> #include <stdlib.h> ]={};//代表有没有切割的数组 ;//输入的要被切割的数字 ]={};//切完输出的数组成的数 ...
- angularjs2 学习笔记(四) 路由
angular2路由是管理angular2应用内部导航的一个重要内容,在angular应用中,很多的组件是通过组合完成一个复杂的应用,不可避免的是我们常会在视图间切换,那么这是就需要使用路由来管理视图 ...
- C 实现一个跨平台的定时器 论述
引言 今天我们要讲述和构建的是一个跨平台多线程C的定时器对象,粒度是毫秒级别.可以称之为简易的timer, sctimer.h 库. 首先看总的接口,看门见客. sctimer.h #ifndef _ ...
- bootstrap-table-master
http://bootstrap-table.wenzhixin.net.cn/getting-started/ 1.安装bower 2. 3.编译css and js 以上就编译完了boostrap ...
- java reflect 初始学习 动态加载类
首先要理解Class类: 在java 的反射中,Class.forName("com.lilin.Office") 使用类的全名,这样获取,不仅仅表示了类的类类型,同时还代表着类的 ...
- rman 命令
OS: Oracle Linux Server release 5.7 DB: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - ...
- bootstrap插件之Carousel
兼容:ie9以上 特点:滑动图片看起来永远只有两帧,过度完美:是html css js的完美配合:其中html的data属性起了关键性作用 前提:normalize.css jquery.js ht ...
- Struts1+JQuery的例子
Struts1+JQuery的例子 2014年2月10日 11:25 Struts1+JQuery+JSON/XML的例子 1.Struts+JQuery+XML struts-config.xml如 ...
- [shell基础]——awk命令
关于awk awk是一个强大的文本分析工具,相对于grep的查找.sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大. 简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开 ...
- 搭建SpringMVC+MyBatis开发框架一
大部分 Java 应用都是 Web 应用,展现层是 Web 应用不可忽略的重要环节.Spring 为展现层提供了一个优秀的 Web 框架—— Spring MVC.和众多其他 Web 框架一样,它基于 ...