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 ...
随机推荐
- [div+css布局]命名规则
//首页可能碰到的 页头:header登录条:loginBar标志:logo侧栏:sideBar广告:banner导航:nav子导航:subNav菜单:menu子菜单:subMenu搜索:search ...
- VIM编辑器常用功能整理笔记
vim编辑器 vi : visual Inertface 可视化接口 vim : vi improved 扩展版 语法着色 模式化编辑器: 编辑模式(命令模式): 默认模式 输入模式: 末行模式: 等 ...
- 刀哥多线程之主队列gcd-06-main_queue
主队列 特点 专门用来在主线程上调度任务的队列 不会开启线程 以先进先出的方式,在主线程空闲时才会调度队列中的任务在主线程执行 如果当前主线程正在有任务执行,那么无论主队列中当前被添加了什么任务,都不 ...
- 在Windows下使用BAT调度存储在资源库中的KTR
描述: 在Windows下使用BAT调度存储在资源库中的KTR 准备环境: 1.ktr文件(该KTR必须是存储在资源管库中的) 2.bat文件 @echo off D: cd D:\software\ ...
- qtp 设置等待时间
1.file->settings->run .默认的时间是20 秒 2. browser("browser").Navigate http://www.baidu.co ...
- Android--监听ListView滚动到最底部
监听ListView滚动到最底部使用 onScrollStateChanged(AbsListView view, int scrollState) 方法,代码大致如下: // 监听listview滚 ...
- hdu 2035 人见人爱A^B
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2035 人见人爱A^B Description 求A^B的最后三位数表示的整数.说明:A^B的含义是“A ...
- C# DateTime详解
//今天DateTime.Now.Date.ToShortDateString();//昨天,就是今天的日期减一DateTime.Now.AddDays(-1).ToShortDateString() ...
- 各设备如何清理dns缓存
Windows 按下 Windows+R 键,运行 cmd ,在命令提示符运行命令 ipconfig /flushdns OS X 10.10 在[应用程序][实用工具][终端]运行命令 sudo d ...
- 二、verilogHDL行为描述建模
1.综合器: 能把行为级的verilog模块自动转换为门级结构的工具叫做综合器(synthsis tool) 2.verilog网表(verilog netlist): 电路结构可以用门级verilo ...