Java AES 加密工具类
package com.microwisdom.utils; import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64; /**
* @version V1.0
* @desc AES 加密工具类
*/
public class AESUtil { private static final String KEY_ALGORITHM = "AES";
private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";//默认的加密算法 /**
* AES 加密操作
*
* @param content 待加密内容
* @param password 加密密码
* @return 返回Base64转码后的加密数据
*/
public static String encrypt(String content, String password) {
try {
Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);// 创建密码器 byte[] byteContent = content.getBytes("utf-8"); cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(password));// 初始化为加密模式的密码器 byte[] result = cipher.doFinal(byteContent);// 加密 return Base64.encodeBase64String(result);//通过Base64转码返回
} catch (Exception ex) {
Logger.getLogger(AESUtil.class.getName()).log(Level.SEVERE, null, ex);
} return null;
} /**
* AES 解密操作
*
* @param content
* @param password
* @return
*/
public static String decrypt(String content, String password) { try {
//实例化
Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM); //使用密钥初始化,设置为解密模式
cipher.init(Cipher.DECRYPT_MODE, getSecretKey(password)); //执行操作
byte[] result = cipher.doFinal(Base64.decodeBase64(content)); return new String(result, "utf-8");
} catch (Exception ex) {
Logger.getLogger(AESUtil.class.getName()).log(Level.SEVERE, null, ex);
} return null;
} /**
* 生成加密秘钥
*
* @return
*/
private static SecretKeySpec getSecretKey(final String password) {
//返回生成指定算法密钥生成器的 KeyGenerator 对象
KeyGenerator kg = null; try {
kg = KeyGenerator.getInstance(KEY_ALGORITHM); //AES 要求密钥长度为 128
kg.init(128, new SecureRandom(password.getBytes())); //生成一个密钥
SecretKey secretKey = kg.generateKey(); return new SecretKeySpec(secretKey.getEncoded(), KEY_ALGORITHM);// 转换为AES专用密钥
} catch (NoSuchAlgorithmException ex) {
Logger.getLogger(AESUtil.class.getName()).log(Level.SEVERE, null, ex);
} return null;
} public static void main(String[] args) {
String s = "hello,您好"; System.out.println("s:" + s); String s1 = AESUtil.encrypt(s, "1234");
System.out.println("s1:" + s1); System.out.println("s2:"+AESUtil.decrypt(s1, "1234")); } }
Java AES 加密工具类的更多相关文章
- java MD5Utils 加密工具类
		
package com.sicdt.library.core.utils; import java.io.File; import java.io.FileInputStream; import ja ...
 - Android AES加密工具类实现(基础回顾)
		
package com.powercreator.cms.util; import java.security.SecureRandom; import javax.crypto.Cipher; im ...
 - AES加密工具类(对称加密算法)
		
import java.nio.charset.Charset; import java.security.Key; import javax.crypto.Cipher;import javax.c ...
 - AES 加密工具类
		
/** * AES 是一种可逆加密算法,对用户的敏感信息加密处理 对原始数据进行AES加密后,在进行Base64编码转化: */public class AESOperator { /* * 加密用的 ...
 - Java AES加密算法工具类
		
AESCodec.java package util; import java.security.Key; import javax.crypto.Cipher; import javax.crypt ...
 - Java MD5加密工具类
		
public final static String MD5(String s) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', ' ...
 - java 加密工具类(MD5、RSA、AES等加密方式)
		
1.加密工具类encryption MD5加密 import org.apache.commons.codec.digest.DigestUtils; /** * MD5加密组件 * * @autho ...
 - 加密工具类 - CryptoUtils.java
		
加密工具类,包含MD5,BASE64,SHA,CRC32的加密与解密方法. 源码如下:(点击下载 - CryptoUtils.java.commons-io-2.4.jar.commons-code ...
 - java AES加密、解密(兼容windows和linux)
		
java AES加密.解密 CreationTime--2018年7月14日10点06分 Author:Marydon 1.准备工作 updateTime--2018年8月10日15点28分 up ...
 
随机推荐
- Codeforces Round #281 (Div. 2) D. Vasya and Chess 镜面对称 博弈论
			
D. Vasya and Chess time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
 - LR监控Apache资源
			
前提本文使用的是lampp环境下自带的Apache服务 步骤1.修改Apache中Httpd.conf文件,添加如下代码:文件位置为:/opt/lampp/etc/httpd.conf,如下图: &l ...
 - How to read out WhatsApp messages with Tasker and react on their content in real time
			
http://technologyworkroom.blogspot.sg/2013/05/tasker-how-to-read-out-whatsapp.html Tasker can read o ...
 - JQUERY AJAX无刷新异步上传文件
			
AJAX无刷新上传文件并显示 http://blog.csdn.net/gao3705512/article/details/9330637?utm_source=tuicool jQuery For ...
 - powerdesigner反向SQLServer2008数据库生成物理数据模型
			
方法一:通过数据库脚本生成物理数据模型 具体步骤如下图所示:
 - C语言 const, static, static const 的区别
			
基本定义: const 就是只读的意思,只在声明中使用;static 一般有2个作用,规定作用域和存储方式. 对于局部变量, static规定其为静态存储方式, 每次调用的初始值为上一次调用的值,调 ...
 - nsstring 怎么包含”(引号)号
			
使用转义字符 \ 即可.如下: [NSString *string = @"\"好\""]; NSLog("%@",string); 打印结 ...
 - 在进行form提交时,根据form的选择,在javascript中进行特定提交
			
1.html代码片段 <form name="form1" method="post" action=""> <selec ...
 - Spring3.1.2与Hibernate4.1.8整合
			
整合Spring3.1.2 与 Hibernate 4.1.8 首先准备整合jar: Spring3.1.2: org.springframework.aop-3.1.2.RELEASE.jar or ...
 - TRIZ理论的进化法则分析(TRIZ学习笔记)
			
人们在创新和完好系统的过程能够遵循一定的规律(或者叫法则).从而降低创新和完好系统过程中的试错成本,以下就TRIZ的八大进化原则来进行说明(这个八大法则是前人们的总结,我这里当然会增加我的理解). 我 ...