21xrx.com
2024-12-27 20:04:42 Friday
登录
文章检索 我的文章 写文章
使用Java实现AES加密算法
2023-06-14 23:59:14 深夜i     --     --
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);

  }

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复