当前位置:实例文章 » 其他实例» [文章]【Java实现AES加解密】

【Java实现AES加解密】

发布人:shili8 发布时间:2024-11-15 13:55 阅读次数:0

**Java 实现 AES 加解密**

AES(Advanced Encryption Standard)是一种常用的对称密钥块加密算法。它是由美国国家标准与技术研究所(NIST)在2001 年推出的,取代了 DES(Data Encryption Standard)。AES 是一种非常强大的加密算法,广泛应用于数据保护和安全领域。

在本文中,我们将使用 Java 来实现 AES 加解密。我们将使用 Java 的 `javax.crypto` 包来完成这一任务。

### **1. 导入必要的包**

首先,我们需要导入必要的包:

javaimport javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
import java.util.Base64;

### **2.生成密钥**

AES 加解密需要一个密钥来进行加密和解密。我们可以使用 `javax.crypto.spec.SecretKeySpec` 类来生成一个 AES 密钥。
javapublic class AESUtil {
 public static Key generateKey(String key) throws Exception {
 //生成密钥 byte[] bytes = key.getBytes("UTF-8");
 SecretKeySpec secretKeySpec = new SecretKeySpec(bytes, "AES");
 return secretKeySpec;
 }
}

### **3. 加密**

现在,我们可以使用 `javax.crypto.Cipher` 类来进行加密。
javapublic class AESUtil {
 public static String encrypt(String data, Key key) throws Exception {
 // 创建 Cipher 对象 Cipher cipher = Cipher.getInstance("AES");
 cipher.init(Cipher.ENCRYPT_MODE, key);
 // 进行加密 byte[] bytes = cipher.doFinal(data.getBytes("UTF-8"));
 return Base64.getEncoder().encodeToString(bytes);
 }
}

### **4. 解密**

最后,我们可以使用 `javax.crypto.Cipher` 类来进行解密。
javapublic class AESUtil {
 public static String decrypt(String data, Key key) throws Exception {
 // 创建 Cipher 对象 Cipher cipher = Cipher.getInstance("AES");
 cipher.init(Cipher.DECRYPT_MODE, key);
 // 进行解密 byte[] bytes = Base64.getDecoder().decode(data);
 return new String(cipher.doFinal(bytes), "UTF-8");
 }
}

### **5. 测试**

现在,我们可以测试一下我们的 AES 加解密功能。
javapublic class Main {
 public static void main(String[] args) throws Exception {
 //生成密钥 Key key = AESUtil.generateKey("mysecretkey");
 // 加密 String encryptedData = AESUtil.encrypt("Hello, World!", key);
 System.out.println("加密后数据:" + encryptedData);
 // 解密 String decryptedData = AESUtil.decrypt(encryptedData, key);
 System.out.println("解密后数据:" + decryptedData);
 }
}

### **6. 结论**

在本文中,我们使用 Java 实现了 AES 加解密功能。我们使用 `javax.crypto` 包来完成这一任务。我们生成了一个 AES 密钥,进行加密和解密,并测试了我们的功能。

AES 是一种非常强大的加密算法,广泛应用于数据保护和安全领域。在实际项目中,我们可以使用这种加密算法来保护敏感数据。

### **7. 附录**

#### **7.1 AES 加解密示例代码**
javapublic class AESUtil {
 public static Key generateKey(String key) throws Exception {
 //生成密钥 byte[] bytes = key.getBytes("UTF-8");
 SecretKeySpec secretKeySpec = new SecretKeySpec(bytes, "AES");
 return secretKeySpec;
 }
 public static String encrypt(String data, Key key) throws Exception {
 // 创建 Cipher 对象 Cipher cipher = Cipher.getInstance("AES");
 cipher.init(Cipher.ENCRYPT_MODE, key);
 // 进行加密 byte[] bytes = cipher.doFinal(data.getBytes("UTF-8"));
 return Base64.getEncoder().encodeToString(bytes);
 }
 public static String decrypt(String data, Key key) throws Exception {
 // 创建 Cipher 对象 Cipher cipher = Cipher.getInstance("AES");
 cipher.init(Cipher.DECRYPT_MODE, key);
 // 进行解密 byte[] bytes = Base64.getDecoder().decode(data);
 return new String(cipher.doFinal(bytes), "UTF-8");
 }
}

#### **7.2 测试示例代码**
javapublic class Main {
 public static void main(String[] args) throws Exception {
 //生成密钥 Key key = AESUtil.generateKey("mysecretkey");
 // 加密 String encryptedData = AESUtil.encrypt("Hello, World!", key);
 System.out.println("加密后数据:" + encryptedData);
 // 解密 String decryptedData = AESUtil.decrypt(encryptedData, key);
 System.out.println("解密后数据:" + decryptedData);
 }
}

#### **7.3 AES 加解密注意事项**

* AES 加解密需要一个密钥来进行加密和解密。
* 密钥长度应为128、192 或256 位。
* 使用 AES 加解密时,应使用 `javax.crypto` 包中的 `Cipher` 类。
* 在实际项目中,应使用安全的随机数生成器(RNG)来生成密钥。

以上是Java实现AES加解密的详细教程。

相关标签:java
其他信息

其他资源

Top