Java函数实现AES加密算法的详解与应用示例。
AES(Advanced Encryption Standard,高级加密标准),是一种对称加密算法。它是以替代原来的DES算法为目的而诞生的。对于AES算法,其密钥长度支持128、192、256位。AES的加密过程是在一个四行四列的矩阵上进行的。这个矩阵称为“状态表”,在加密和解密两个方向上都会进行状态转换,AES算法中最重要的是状态转换函数。
以下是Java函数实现AES加密算法的详解和示例:
1. 导入相关类库
在Java代码中,需要导入javax.crypto类库中的Cipher和KeyGenerator类。
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
2. 生成密钥并初始化
首先可以使用KeyGenerator类生成AES算法的密钥,然后使用Cipher类来初始化加密/解密操作。
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128);
SecretKey secretKey = keyGenerator.generateKey();
Cipher cipher = Cipher.getInstance("AES");
3. 加密操作
将需要加密的明文转换为字节数组,然后使用Cipher类的encrypt()方法进行加密操作。最后将加密后的结果转换为Base64编码。
String plainText = "Hello, World!";
byte[] plainTextBytes = plainText.getBytes();
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedBytes = cipher.doFinal(plainTextBytes);
String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);
4. 解密操作
将Base64编码的加密字符串解码为字节数组,然后使用Cipher类的decrypt()方法进行解密操作。最后将解密后的结果转换为字符串。
byte[] encryptedBytes = Base64.getDecoder().decode(encryptedText);
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
String decryptedText = new String(decryptedBytes);
完整代码实现如下:
import java.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
public class AESEncryptionDemo {
public static void main(String[] args) throws Exception {
// Generate key
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128);
SecretKey secretKey = keyGenerator.generateKey();
// Initialize encryption cipher
Cipher cipher = Cipher.getInstance("AES");
// Encrypt
String plainText = "Hello, World!";
byte[] plainTextBytes = plainText.getBytes();
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedBytes = cipher.doFinal(plainTextBytes);
String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);
System.out.println("Encrypted text: " + encryptedText);
// Decrypt
byte[] encryptedTextBytes = Base64.getDecoder().decode(encryptedText);
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedBytes = cipher.doFinal(encryptedTextBytes);
String decryptedText = new String(decryptedBytes);
System.out.println("Decrypted text: " + decryptedText);
}
}
AES加密算法的应用示例:
在开发加密相关的系统时,使用AES算法进行数据加密是非常常见的。比如,在网上银行系统中,用户的敏感信息如密码、身份证号等需要进行加密保护,以防止被攻击者窃取。同时,也可以将AES算法用于网络通信的加密过程中,来保证通信双方的数据私密性和完整性。在Java开发中,实现AES加密算法非常方便,并且在系统的安全性方面有着广阔的应用前景。
