Java AES256 加密算法
简介
AES(Advanced Encryption Standard)是一种对称密钥加密算法,它是目前应用最广泛的加密算法之一。AES256是AES算法的一种变种,使用256位密钥进行加密和解密。在Java中,我们可以使用javax.crypto包中的类来实现AES256加密算法。
AES256加密示例
以下是一个使用Java实现AES256加密的示例代码:
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import java.security.*;
public class AES256 {
private static final String ALGORITHM = "AES";
private static final String TRANSFORMATION = "AES/ECB/PKCS5Padding";
public static byte[] encrypt(String plainText, String secretKey) throws Exception {
Key key = generateKey(secretKey);
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
cipher.init(Cipher.ENCRYPT_MODE, key);
return cipher.doFinal(plainText.getBytes());
}
public static String decrypt(byte[] cipherText, String secretKey) throws Exception {
Key key = generateKey(secretKey);
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] result = cipher.doFinal(cipherText);
return new String(result);
}
private static Key generateKey(String secretKey) throws Exception {
byte[] keyBytes = secretKey.getBytes();
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hashedBytes = digest.digest(keyBytes);
return new SecretKeySpec(hashedBytes, ALGORITHM);
}
public static void main(String[] args) {
try {
String plainText = "Hello, World!";
String secretKey = "SecretKey123";
byte[] encryptedText = encrypt(plainText, secretKey);
String decryptedText = decrypt(encryptedText, secretKey);
System.out.println("Plain Text: " + plainText);
System.out.println("Encrypted Text: " + new String(encryptedText));
System.out.println("Decrypted Text: " + decryptedText);
} catch (Exception e) {
e.printStackTrace();
}
}
}
上述代码中,我们首先定义了ALGORITHM和TRANSFORMATION常量,分别表示使用AES算法和ECB/PKCS5Padding填充模式。
encrypt方法接收明文和密钥作为参数,生成密钥并初始化加密器。然后,通过调用doFinal方法对明文进行加密并返回加密后的字节数组。
decrypt方法接收密文和密钥作为参数,同样生成密钥并初始化解密器。然后,通过调用doFinal方法对密文进行解密并返回解密后的字符串。
generateKey方法根据传入的密钥生成SHA-256散列后的字节数组,并使用该字节数组生成AES密钥。
在main方法中,我们演示了如何使用encrypt和decrypt方法对明文进行加密和解密。我们将"Hello, World!"作为明文进行加密,并将加密后的字节数组转为字符串输出。然后,我们使用同样的密钥对密文进行解密,并输出解密后的明文。
AES256加密流程图
下面是使用mermaid语法绘制的AES256加密流程图:
pie
title AES256加密流程
"生成密钥" : 25
"加密明文" : 25
"生成密文" : 25
"解密密文" : 25
AES256类图
下面是使用mermaid语法绘制的AES256类图:
classDiagram
class AES256 {
- ALGORITHM : String
- TRANSFORMATION : String
- generateKey(String) : Key
+ encrypt(String, String) : byte[]
+ decrypt(byte[], String) : String
}
AES256 --> "javax.crypto.Cipher"
AES256 --> "javax.crypto.spec.SecretKeySpec"
AES256 --> "java.security.Key"
AES256 --> "java.security.MessageDigest"
在上述类图中,AES256类包含了生成密钥、加密和解密方法。它依赖于javax.crypto和java.security包中的类来实现加密算法的各个步骤。
结论
在本文中,我们介绍了Java中如何使用AES256加密算法对数据进行加密和解密。我们提供了一个简单的示例代码,并使用mermaid语法绘制了加密流程图和类图。通过
















