Java笔记-对称加密AES的使用
Posted IT1995
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java笔记-对称加密AES的使用相关的知识,希望对你有一定的参考价值。
AES加密库的使用:
·根据AES密钥创建Secret密钥向量;
·生成初始化参数向量;
·获取AES Cipher;
·执行加密;
·Base64编码(建议)
程序运行截图如下:
调用如下:
public static void main(String[] args) throws UnsupportedEncodingException {
String content = "123456";
AES aes = new AES();
byte[] encrypted = aes.encrypt(content);
System.out.println(new String(encrypted));
......
......
}
AES.java
package cn.it1995.tool;
import javax.crypto.*;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
//AES没有公钥和私钥之分
public class AES {
private SecretKey mKey;
public AES(){
try {
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
//创建随机密码,并设置种子
SecureRandom secureRandom = new SecureRandom();
secureRandom.setSeed(System.currentTimeMillis());
//初始化密钥对象
keyGenerator.init(128, secureRandom);
mKey = keyGenerator.generateKey();
}
catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
public byte[] encrypt(String content){
if(mKey == null){
return new byte[]{-1};
}
try {
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, mKey);
return cipher.doFinal(content.getBytes());
}
catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
catch (NoSuchPaddingException e) {
e.printStackTrace();
}
catch (BadPaddingException e) {
e.printStackTrace();
}
catch (IllegalBlockSizeException e) {
e.printStackTrace();
}
catch (InvalidKeyException e) {
e.printStackTrace();
}
return new byte[]{-1};
}
public byte[] decrypt(byte[] content){
if(mKey == null){
return new byte[]{-1};
}
try {
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, mKey);
return cipher.doFinal(content);
}
catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
catch (NoSuchPaddingException e) {
e.printStackTrace();
}
catch (BadPaddingException e) {
e.printStackTrace();
}
catch (IllegalBlockSizeException e) {
e.printStackTrace();
}
catch (InvalidKeyException e) {
e.printStackTrace();
}
return new byte[]{-1};
}
}
以上是关于Java笔记-对称加密AES的使用的主要内容,如果未能解决你的问题,请参考以下文章
[译] 最佳安全实践:在 Java 和 Android 中使用 AES 进行对称加密