import java.io.UnsupportedEncodingException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.spec.SecretKeySpec;
public class AESUtils {
private static KeyGenerator keyGen;
private static Cipher cipher;
private static final String algorithmStr = "AES/ECB/PKCS5Padding";
private static String keyStr = "aaaaaa";
static {
try {
// 初始化keyGen
keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
// 初始化cipher
cipher = Cipher.getInstance(algorithmStr);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws NoSuchAlgorithmException {
String string = "{\"name\": \"test\"}";
String string2 = "www";
String encryptString = encrypt(string);
System.out.println("原始数据: " + string + " 加密后: " + encryptString + " 解密后: " + decrypt(encryptString));
String encryptString2 = encrypt(string2);
System.out.println("原始数据: " + string2 + " 加密后: " + encryptString2 + " 解密后: " + decrypt(encryptString2));
}
/**
* 加密方法.
*/
public static String encrypt(String content) {
byte[] encryptedBytes = null;
Key key = new SecretKeySpec(keyStr.getBytes(), "AES");
try {
cipher.init(Cipher.ENCRYPT_MODE, key);
encryptedBytes = cipher.doFinal(stringToBytes(content));
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return bytesToString(Base64.getEncoder().encode(encryptedBytes));
}
/**
* 解密方法.
*/
public static String decrypt(String content) {
byte[] originBytes = null;
Key key = new SecretKeySpec(keyStr.getBytes(), "AES");
try {
cipher.init(Cipher.DECRYPT_MODE, key);
originBytes = cipher.doFinal(Base64.getDecoder().decode(content));
} catch (Exception e) {
e.printStackTrace();
}
return bytesToString(originBytes);
}
/**
* 转字节数据.
*/
private static byte[] stringToBytes(String str) {
return str.getBytes();
}
/**
* 字节数组转为字符串.
*/
private static String bytesToString(byte[] bytes) {
String string = null;
try {
string = new String(bytes, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return string;
}
}
分享到:
相关推荐
http://blog.csdn.net/two_water/article/details/52559989 AES加密解密工具类:AESUtil
AES加密工具类
"AES": 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。...
AESUtils实现了基于AES的ECB模式,选用了zeropadding填充,数据位为128 加上密码去加解密数据,优化并实测通过
用AES加密算法对数据进行加密,这种加密算法可加密128到256比特的数据。
里面jar包齐全,分别是:local_policy.jar和US_export_policy.jar,还有《使用说明》文档,需要的可以下载
AES/CBC/PKCS5Padding 加密输出
简介:采用密钥为16位长度的加密字符,算法为AES,CBC模式,PKCS5Padding填充模式。在Demo中使用了两个转换方法,二进制转为16进制,...tvDecrypt.setText(AESUtils.decrypt(key, tvEncryption.getText().toString()));
跨平台 AES MD5 ECC DES RSA 加密解密 支持 进度 支持多种编码.源码.FlyUtils
AES加密和解密的工具类,DLL可以直接引用到代码。支持WIN 7及以上版本。
利用jdk自带算法实现的AES加解密工具类及Base64编解码工具类、 文件操作工具类、aes扩展无限制权限策略文件等。 在jdk1.7环境亲测通过。
提供了一些加密解密的处理方法。
AESUtils、Base64、ByteUtil、DESUtils、HexUtil、MD5Utils、RSAEncrypt、SharePreUtils。用于数据的安全性及数据持久化 > io > -- BitmapUtils、FileUtils、IOUtils、PhotoUtils、StorageUtils。用于图片、文件、...
综合网上的AES加密,把其做成一个工具类,方便加密解密的实现
AesUtils - 实现AES加密解密 Base64Utils - 实现Base64加密解密 Md5Utils - 获取字符串或文件的md5 excel ReadExcel2003 - 以model方式读2003版Excel(大数据) ReadExcel2007 - 以sax方式读2007版Excel(大数据)...
AES加解密工具类,修改了解密时字符串转byte数组时的转换问题
前端:rsa jsencrypt.js\ aes.js & demo.html 后端: AesUtils.java 、 RSACoder.java
通用工具 java常用帮助类 很多逻辑写过,为了减少重复性工作,将平时经常用到的一些方法封装成工具类 ...AESUtils AES加密工具类 Base64Utils BASE64加解密工具类 DESUtils DES加解密工具类 EncryptAnd
主要介绍了PHP实现的AES加密、解密封装类与用法,结合实例形式分析了php封装的aes加密解密操作类及相关使用技巧,需要的朋友可以参考下
rsa-aes-utils RSA、AES 加解密,浏览器端 JS 加密,服务端 nodejs、java 解密。 加解密介绍 加密算法分对称加密和非对称算法,其中对称加密算法的加密与解密密钥相同,非对称加密算法的加密密钥与解密密钥不同,...