- 浏览: 2243017 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- FileNet相关 (3)
- 应用服务器相关 (22)
- Java综合 (77)
- 持久层 (24)
- struts (11)
- webservice (8)
- 虚拟机 (2)
- 光盘刻录 (0)
- AD及AD集群 (1)
- JS (33)
- F5 (0)
- loadrunner8.1 (0)
- Java 反编译工具 (2)
- DataBase (62)
- ant (1)
- 操作系统 (29)
- 我的任务 (3)
- 平台架构 (16)
- 业务规则引擎 (2)
- 模板 (1)
- EJB (5)
- spring (24)
- CMMI (1)
- 项目管理 (20)
- LDAP (13)
- JMS (10)
- JSP (19)
- JBPM (2)
- web MVC框架设计思想 (2)
- 第三方支付平台 (2)
- BUG管理工具 (1)
- 垃圾站 (2)
- php (1)
- swing (1)
- 书籍 (1)
- QQ qq (2)
- 移动互联网 (26)
- 爱听的歌曲 (0)
- hadoop (4)
- 数据库 (9)
- 设计模式 (1)
- 面试经验只谈 (1)
- 大数据 (9)
- sp (1)
- 缓存数据库 (8)
- storm (2)
- taobao (2)
- 分布式,高并发,大型互联网,负载均衡 (6)
- Apache Ignite (0)
- Docker & K8S (0)
最新评论
-
wangyudong:
新版本 Wisdom RESTClienthttps://gi ...
spring rest mvc使用RestTemplate调用 -
wangyudong:
很多API doc生成工具生成API文档需要引入第三方依赖,重 ...
spring rest mvc使用RestTemplate调用 -
zhaoshijie:
cfying 写道大侠,还是加载了两次,怎么解决啊?求。QQ: ...
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
xinglianxlxl:
对我有用,非常感谢
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
k_caesar:
多谢,学习了
利用maven的resources、filter和profile实现不同环境使用不同配置文件
关键字:对称加密(AES)加密实现工具类(教程)
Java加密解密相关名词(概念)解释(RSA、AES)
错误:java.security.InvalidKeyException: Illegal key size or default parameters解决方法
目前发现AES加密虽然可以大量加密文本速度也很快,但是内存消耗很大,如果需要大量文本加密的同学需要好好评估一下。之后还会贴出非对称加密(RSA)的加密、解密示例,以及.net 与Java间RSA加密的转换。
AES解密、加密工具类例子
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
public class AESSecurityUtil {
/** 密钥算法 */
private static final String KEY_ALGORITHM = "AES";
private static final int KEY_SIZE = 128;
/** 加密/解密算法/工作模式/填充方法 */
// public static final String CIPHER_ALGORITHM = "AES/ECB/NoPadding";
/**
* 获取密钥
* @return
* @throws Exception
*/
public static Key getKey() throws Exception{
//实例化
KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM);
//AES 要求密钥长度为128位、192位或256位
kg.init(KEY_SIZE);
//生成密钥
SecretKey secretKey = kg.generateKey();
return secretKey;
}
/**
* 转化密钥
* @param key 密钥
* @return Key 密钥
* @throws Exception
*/
public static Key codeToKey(String key) throws Exception{
byte[] keyBytes = Base64.decodeBase64(key);
SecretKey secretKey = new SecretKeySpec(keyBytes,KEY_ALGORITHM);
return secretKey;
}
/**
* 解密
* @param data 待解密数据
* @param key 密钥
* @return byte[] 解密数据
* @throws Exception
*/
private static String decrypt(byte[] data,byte[] key) throws Exception{
//还原密钥
Key k = new SecretKeySpec(key,KEY_ALGORITHM);
/**
* 实例化
* 使用PKCS7Padding填充方式,按如下方式实现
* Cipher.getInstance(CIPHER_ALGORITHM,"BC");
*/
Cipher cipher = Cipher.getInstance(KEY_ALGORITHM);
//初始化,设置解密模式
cipher.init(Cipher.DECRYPT_MODE,k);
//执行操作
return new String(cipher.doFinal(data),"UTF-8");
}
/**
* 解密
* @param data 待解密数据
* @param key 密钥
* @return byte[] 解密数据
* @throws Exception
*/
public static String decrypt(String data,String key) throws Exception{
return decrypt(Base64.decodeBase64(data), Base64.decodeBase64(key));
}
/**
* 加密
* @param data 待加密数据
* @param key 密钥
* @return bytes[] 加密数据
* @throws Exception
*/
public static byte[] encrypt(byte[] data,byte[] key) throws Exception{
//还原密钥
Key k = new SecretKeySpec(key,KEY_ALGORITHM);
/**
* 实例化
* 使用PKCS7Padding填充方式,按如下方式实现
* Cipher.getInstance(CIPHER_ALGORITHM,"BC");
*/
Cipher cipher = Cipher.getInstance(KEY_ALGORITHM);
//初始化,设置为加密模式
cipher.init(Cipher.ENCRYPT_MODE,k);
//执行操作
return cipher.doFinal(data);
}
public static String encrypt(String data,String key) throws Exception{
byte[] dataBytes = data.getBytes("UTF-8");
byte[] keyBytes = Base64.decodeBase64(key);
return Base64.encodeBase64String(encrypt(dataBytes, keyBytes));
}
/**
* 初始化密钥
* @return
* @throws Exception
*/
public static String getKeyStr() throws Exception{
return Base64.encodeBase64String(getKey().getEncoded());
}
public static void main(String[] args) throws Exception{
String key = "VxDksHQiTvQt9MMPtMVXdA==";
String wenjian = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<mainData>\n" +
"<config>\n" +
" <operate>1</operate> <!--0:删除,1:新增,2:修改-->\n" +
"</config>\n" +
"<dataList type=\"personnel\">\n" +
" <data id=\"员工主数据主键\"> <!--默认主数据代码-->\n" +
" <code></code> <!--代码-->\n" +
" <name></name> <!--姓名-->\n" +
" <sex></sex> <!--性别-->\n" +
" <birthday></birthday> <!--出生日期-->\n" +
" <education></education> <!--文化程度-->\n" +
" <idNumber></idNumber> <!--身份证号码-->\n" +
" <entryDate></entryDate> <!--入职日期-->\n" +
" <departureDate></departureDate> <!--离职日期-->\n" +
" <address></address> <!--住址-->\n" +
" <phoneNumber></phoneNumber> <!--电话-->\n" +
" <mobilePhoneNumber></mobilePhoneNumber><!--移动电话-->\n" +
" <email></email> <!--电子邮件-->\n" +
" <position></position> <!--职务-->\n" +
" <maritalStatus></maritalStatus> <!--婚姻状况-->\n" +
" <partyAffiliation></partyAffiliation><!--政治面貌-->\n" +
" <username></username> <!--用户名-->\n" +
" <sortNo></sortNo> <!--排序号-->\n" +
" <status></status> <!--状态-->\n" +
" <department></department> <!--所属部门-->\n" +
" <company></company> <!--所属公司-->\n" +
" </data>\n" +
"</dataList>\n" +
"</mainData>";
StringBuffer buffer = new StringBuffer();
for(int index = 0;index < 20000;index ++){
buffer.append(wenjian);
}
String jimm = buffer.toString();
String mw = AESSecurityUtil.encrypt(jimm,key);
System.out.println("密文:" + mw);
String jm = AESSecurityUtil.decrypt(mw,key);
System.out.println("明文:" + jm);
}
}
Java加密解密相关名词(概念)解释(RSA、AES)
错误:java.security.InvalidKeyException: Illegal key size or default parameters解决方法
目前发现AES加密虽然可以大量加密文本速度也很快,但是内存消耗很大,如果需要大量文本加密的同学需要好好评估一下。之后还会贴出非对称加密(RSA)的加密、解密示例,以及.net 与Java间RSA加密的转换。
AES解密、加密工具类例子
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
public class AESSecurityUtil {
/** 密钥算法 */
private static final String KEY_ALGORITHM = "AES";
private static final int KEY_SIZE = 128;
/** 加密/解密算法/工作模式/填充方法 */
// public static final String CIPHER_ALGORITHM = "AES/ECB/NoPadding";
/**
* 获取密钥
* @return
* @throws Exception
*/
public static Key getKey() throws Exception{
//实例化
KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM);
//AES 要求密钥长度为128位、192位或256位
kg.init(KEY_SIZE);
//生成密钥
SecretKey secretKey = kg.generateKey();
return secretKey;
}
/**
* 转化密钥
* @param key 密钥
* @return Key 密钥
* @throws Exception
*/
public static Key codeToKey(String key) throws Exception{
byte[] keyBytes = Base64.decodeBase64(key);
SecretKey secretKey = new SecretKeySpec(keyBytes,KEY_ALGORITHM);
return secretKey;
}
/**
* 解密
* @param data 待解密数据
* @param key 密钥
* @return byte[] 解密数据
* @throws Exception
*/
private static String decrypt(byte[] data,byte[] key) throws Exception{
//还原密钥
Key k = new SecretKeySpec(key,KEY_ALGORITHM);
/**
* 实例化
* 使用PKCS7Padding填充方式,按如下方式实现
* Cipher.getInstance(CIPHER_ALGORITHM,"BC");
*/
Cipher cipher = Cipher.getInstance(KEY_ALGORITHM);
//初始化,设置解密模式
cipher.init(Cipher.DECRYPT_MODE,k);
//执行操作
return new String(cipher.doFinal(data),"UTF-8");
}
/**
* 解密
* @param data 待解密数据
* @param key 密钥
* @return byte[] 解密数据
* @throws Exception
*/
public static String decrypt(String data,String key) throws Exception{
return decrypt(Base64.decodeBase64(data), Base64.decodeBase64(key));
}
/**
* 加密
* @param data 待加密数据
* @param key 密钥
* @return bytes[] 加密数据
* @throws Exception
*/
public static byte[] encrypt(byte[] data,byte[] key) throws Exception{
//还原密钥
Key k = new SecretKeySpec(key,KEY_ALGORITHM);
/**
* 实例化
* 使用PKCS7Padding填充方式,按如下方式实现
* Cipher.getInstance(CIPHER_ALGORITHM,"BC");
*/
Cipher cipher = Cipher.getInstance(KEY_ALGORITHM);
//初始化,设置为加密模式
cipher.init(Cipher.ENCRYPT_MODE,k);
//执行操作
return cipher.doFinal(data);
}
public static String encrypt(String data,String key) throws Exception{
byte[] dataBytes = data.getBytes("UTF-8");
byte[] keyBytes = Base64.decodeBase64(key);
return Base64.encodeBase64String(encrypt(dataBytes, keyBytes));
}
/**
* 初始化密钥
* @return
* @throws Exception
*/
public static String getKeyStr() throws Exception{
return Base64.encodeBase64String(getKey().getEncoded());
}
public static void main(String[] args) throws Exception{
String key = "VxDksHQiTvQt9MMPtMVXdA==";
String wenjian = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<mainData>\n" +
"<config>\n" +
" <operate>1</operate> <!--0:删除,1:新增,2:修改-->\n" +
"</config>\n" +
"<dataList type=\"personnel\">\n" +
" <data id=\"员工主数据主键\"> <!--默认主数据代码-->\n" +
" <code></code> <!--代码-->\n" +
" <name></name> <!--姓名-->\n" +
" <sex></sex> <!--性别-->\n" +
" <birthday></birthday> <!--出生日期-->\n" +
" <education></education> <!--文化程度-->\n" +
" <idNumber></idNumber> <!--身份证号码-->\n" +
" <entryDate></entryDate> <!--入职日期-->\n" +
" <departureDate></departureDate> <!--离职日期-->\n" +
" <address></address> <!--住址-->\n" +
" <phoneNumber></phoneNumber> <!--电话-->\n" +
" <mobilePhoneNumber></mobilePhoneNumber><!--移动电话-->\n" +
" <email></email> <!--电子邮件-->\n" +
" <position></position> <!--职务-->\n" +
" <maritalStatus></maritalStatus> <!--婚姻状况-->\n" +
" <partyAffiliation></partyAffiliation><!--政治面貌-->\n" +
" <username></username> <!--用户名-->\n" +
" <sortNo></sortNo> <!--排序号-->\n" +
" <status></status> <!--状态-->\n" +
" <department></department> <!--所属部门-->\n" +
" <company></company> <!--所属公司-->\n" +
" </data>\n" +
"</dataList>\n" +
"</mainData>";
StringBuffer buffer = new StringBuffer();
for(int index = 0;index < 20000;index ++){
buffer.append(wenjian);
}
String jimm = buffer.toString();
String mw = AESSecurityUtil.encrypt(jimm,key);
System.out.println("密文:" + mw);
String jm = AESSecurityUtil.decrypt(mw,key);
System.out.println("明文:" + jm);
}
}
发表评论
-
各大巨头电商提供的IP库API接口-新浪、搜狐、阿里...
2015-04-22 13:18 15851关键字:各大巨头电商提供的IP库API接口-新浪、搜狐、阿里. ... -
用Java来获取访问者真实的IP地址-超准确
2015-04-22 12:55 6202关键字:用Java来获取访问者真实的IP地址-超准确 下面分享 ... -
Shiro集成OAuth2
2015-04-21 10:31 12350关键字:Shiro集成OAuth2 参考:http://jin ... -
淘宝网架构分享总结 - 架构,分布式,淘宝,虚拟化,水平伸缩
2015-04-19 00:25 7588推荐综合架构交流群:JAVA开发高级群 点击入群!!! 关键 ... -
Zookeeper 和 SASL
2015-04-16 09:29 13528关键字:Zookeeper 和 SASL 介绍 这是一个描述Z ... -
非对称加密(RSA)加密解密实现通信JAVA端工具类(教程)
2015-04-15 17:27 1136关键字:非对称加密(RSA)加密解密实现通信JAVA端工具类( ... -
Curator-Framework开源Zookeeper快速开发框架介绍
2015-04-14 18:41 652关键字:Curator-Framework开源Zookeepe ... -
IM消息推送之Openfire
2015-04-13 13:40 2156关键字:IM消息推送之Openfire Openfire 采用 ... -
Nio框架之Mina的demo
2015-04-12 13:38 575关键字:Nio框架之Mina的demo 官网:http://m ... -
AMQP中文版协议规范
2015-01-23 17:12 2937关键字:AMQP中文版协议规范 AMQP中文版协议规范:ht ... -
数据库连接池选型
2014-12-04 18:32 1127关键字:数据库连接池选型 proxool(与spring不太 ... -
spring中的数据源配置信息加密方案
2014-10-22 10:36 1032关键字:spring中的数据源配置信息加密方案 附件是完整的 ... -
OAuth2.0的Java实现 Apache Amber
2014-10-09 23:20 739关键字:OAuth2.0的Java实现 Apache Ambe ... -
企业信息管理系统基础框架jeesite
2014-05-06 22:21 2530jeesite项目地址(使用说明,):http://jeesi ... -
java中文分词组件-word分词
2014-05-06 21:33 21908关键字:java中文分词组 ... -
java制作可执行文件EXE文件
2014-05-05 18:58 1557关键字:java制作可执行文件EXE文件 参考:http: ... -
Quartz任务调度器详解
2014-04-25 22:46 18903关键字: 参考文章:ht ... -
各种hash算法-hashcodeUtil
2014-04-24 15:36 4188关键字:各种hash算法-hashcodeUtil -
性能监控工具类(StopWatchUtil)
2014-03-21 15:12 5701关键字:性能监控工具类(StopWatchUtil) 附 ... -
性能监控工具类(StopWatchUtil)
2014-03-19 16:35 2关键字:性能监控工具类(StopWatchUtil) 附件是 ...
相关推荐
AES对称加密工具类,本工具类已经测试通过,不需要额外依赖,直接copy即可使用
JAVA AES对称加密工具类,可实用;包含加密字符串和文件流
适用于java开发者使用,用于对称加密的数据。进行加密。
qt5AES加密,ES加密/解密算法是一种可逆的对称加密算法,这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推
综合网上的AES加密,把其做成一个工具类,方便加密解密的实现
Base64+ AES加密工具类 对称加密,十分的方便使用。可用于登录注册各种对称加密
AES加密和解密的工具类,DLL可以直接引用到代码。支持WIN 7及以上版本。
AES(Advanced Encryption Standard)是一种对称加密算法,它使用相同的密钥对数据进行加密和解密。 AES 的密钥长度有 128 位、192 位和 256 位三种可选,密钥长度越长,加密强度越高。 AES 的特点如下: 加密强度...
常用对称加密(AES/DES/3DES)及非对称加密(RSA)工具类
stm32加解密工具类,直接可用,采用AES 对称加密解密 AES_Decrypt(expressText,cipherText , aesKey);
android对称加密AES-128-CBC加密的工具类-附件资源
微信小程序 对称加密 AES ECB base64 加密解密 真实项目可用
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。... CryptoJS工具类包,aes加密只使用了其中的crypto-js.js文件
这是一个Android开发中的文本加密解密工具类,使用AES128对称加密算法,该资源是一个AndroidStudio3.1版本写的工程,其中包含一个工具类和一个调试活动界面,可解压后直接运行。这个是我为公司项目写的与服务器端...
关于AES对称性加密解密的工具类 JAVA语言 即拿即用 JDK版本1.8+
强大的AES加解密工具类,开箱即用。提供加解密和解决部分常见的bug AES 是 Advanced Encryption Standard 的缩写,是最常见的对称加密算法。AES 在密码学中又称 Rijndael 加密法,是美国联邦政府采用的一种区块加密...
1、AES加密工具类 java不支持PKCS7Padding,只支持PKCS5Padding。我们知道加密算法由算法+模式+填充组成,下一篇介绍iOS和Android通用的AES加密,本篇文章使用PKCS5Padding加密方式。 package com.example.aesdemo;...
对称加密算法AES及非对称加密算法RSA对字符串进行封装的工具类及DEMO