21xrx.com
2025-06-21 00:10:50 Saturday
文章检索 我的文章 写文章
使用Java实现AES加密算法
2023-06-14 23:59:14 深夜i     17     0
Java AES 加密算法

在现代的信息安全中,加密算法是一种非常重要的技术,其中AES算法(Advanced Encryption Standard)被广泛应用。本文将介绍如何使用Java语言实现AES加密算法,并给出相应的代码示例。

在开始之前,需要明确AES算法分为两种模式:ECB(Electronic Code Book)和CBC(Cipher Block Chaining)。ECB模式将明文分为若干个块,每个块独立加密;而CBC模式在ECB模式基础上,将前面的密文块作为下一个明文块加密的参数。因此,CBC模式更加安全。

Java中实现AES加密算法可以使用JCE(Java Cryptography Extension)工具包。下面是代码示例:

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.security.SecureRandom;
public class AESEncryptUtil {
  private static final String AES_ALGORITHM = "AES/CBC/PKCS5Padding";
  private static Cipher cipher;
  private static SecretKey secretKey;
  static {
    try {
      // 生成256位随机密钥
      KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
      keyGenerator.init(256, new SecureRandom());
      secretKey = keyGenerator.generateKey();
      cipher = Cipher.getInstance(AES_ALGORITHM);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  public static byte[] encrypt(byte[] data, byte[] iv) throws Exception {
    cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv != null ? iv : new byte[cipher.getBlockSize()]);
    return cipher.doFinal(data);
  }
  public static byte[] decrypt(byte[] data, byte[] iv) throws Exception {
    cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);
    return cipher.doFinal(data);
  }
}

  
  

评论区