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;
}
}
分享到:
相关推荐
**AESUtils加密解密** 在信息安全领域,数据加密是保护数据隐私的重要手段。AES(Advanced Encryption Standard)即高级加密标准,是一种广泛使用的对称加密算法,因其高效且安全性较高而被广泛应用。本篇文章将...
AESUtils实现了基于AES的ECB模式,选用了zeropadding填充,数据位为128 加上密码去加解密数据,优化并实测通过
"AES": 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。...
AES加密工具类
它在Java中也有很好的支持,使得开发者可以方便地在应用程序中集成数据加密功能。在给定的"AES代码_java版本.rar"压缩包中,包含了与AES加密相关的Java实现,包括可能的BackAES(可能是一个自定义实现或后向兼容的...
AES/CBC/PKCS5Padding 加密输出
AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,用于保护数据的安全性。在Java环境中,如果需要进行AES加密和解密操作,通常会依赖特定的库或jar包。在这个压缩包中,提供的两个关键jar文件——...
简介:采用密钥为16位长度的加密字符,算法为AES,CBC模式,PKCS5Padding填充模式。在Demo中使用了两个转换方法,二进制转为16进制,...tvDecrypt.setText(AESUtils.decrypt(key, tvEncryption.getText().toString()));
AESUtil AES的加密和解密java工具类 aes解密 aes加密 KeyGenerator kgen = KeyGenerator.getInstance("AES"); kgen.init(128); Cipher cipher = Cipher.getInstance(ALGORITHMSTR); //"算法/模式/补码方式" ...
综合来看,这个压缩包提供了一个适用于Java环境的AES加密工具类AesUtils.java,它可能包含了上述的加密模式和填充方法,并且可能考虑了非对称加密的私钥安全处理。这样的工具类对于开发人员来说非常实用,可以方便地...
AES加密和解密的工具类,DLL可以直接引用到代码。支持WIN 7及以上版本。
在Java开发中,数据安全是至关重要的,而AES(Advanced Encryption Standard)加解密是一种广泛使用的对称加密算法,能够确保敏感信息的安全性。本文将详细介绍如何利用JDK自带的算法实现AES加解密,并结合Base64编...
提供了一些加密解密的处理方法。
`AesUtils.java`可能包含了处理AES加密的工具类,包括创建密钥、加密和解密方法。`RSACoder.java`则是处理RSA加密/解密的类,可能包含了生成公钥和私钥、解密前端传来的RSA加密数据等功能。 **工作流程** 1. **前端...
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(大数据)...
`AESUtils.java`文件可能包含了AES加解密的实用方法。 3. **OpenAccountControllerTest.java**: 这个名字暗示着一个Spring MVC或Spring Boot应用的控制器测试类,用于测试账户相关的操作。在处理敏感信息如用户...
2. AES加密:在Android中,AESUtils.java可能是一个用于实现AES加解密的工具类。AES是一种块密码,对数据进行128位的块操作,广泛用于文件和通信的加密。示例代码可能会包括生成随机秘钥、初始化向量(IV),以及...
在给定的文件中,`AesUtils.java`可能是一个Java实现的AES加密工具类,而`net.txt`可能是.NET平台上AES加密的相关说明或代码片段。分析这两个文件可以帮助我们更好地理解具体的实现差异,并针对性地解决不兼容问题。...