java怎么实现AES的五种加密模式

avatar
作者
猴君
阅读量:0

在Java中,可以使用Java Cryptography Architecture (JCA)来实现AES的五种加密模式。以下是一些示例代码:

  1. 电子密码本模式 (Electronic Codebook Mode, ECB)
import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.util.Base64;  public class AESExample {     public static void main(String[] args) throws Exception {         String plaintext = "Hello, World!";         String key = "0123456789abcdef"; // 16字节的AES密钥          SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "AES");         Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");         cipher.init(Cipher.ENCRYPT_MODE, secretKey);          byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes());         String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);          System.out.println("Encrypted Text: " + encryptedText);     } } 
  1. 密码分组链接模式 (Cipher Block Chaining Mode, CBC)
import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.util.Base64;  public class AESExample {     public static void main(String[] args) throws Exception {         String plaintext = "Hello, World!";         String key = "0123456789abcdef"; // 16字节的AES密钥         String iv = "fedcba9876543210"; // 16字节的初始化向量          SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "AES");         IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes());         Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");         cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivSpec);          byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes());         String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);          System.out.println("Encrypted Text: " + encryptedText);     } } 
  1. 密文反馈模式 (Cipher Feedback Mode, CFB)
import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.util.Base64;  public class AESExample {     public static void main(String[] args) throws Exception {         String plaintext = "Hello, World!";         String key = "0123456789abcdef"; // 16字节的AES密钥         String iv = "fedcba9876543210"; // 16字节的初始化向量          SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "AES");         IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes());         Cipher cipher = Cipher.getInstance("AES/CFB/PKCS5Padding");         cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivSpec);          byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes());         String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);          System.out.println("Encrypted Text: " + encryptedText);     } } 
  1. 输出反馈模式 (Output Feedback Mode, OFB)
import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.util.Base64;  public class AESExample {     public static void main(String[] args) throws Exception {         String plaintext = "Hello, World!";         String key = "0123456789abcdef"; // 16字节的AES密钥         String iv = "fedcba9876543210"; // 16字节的初始化向量          SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "AES");         IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes());         Cipher cipher = Cipher.getInstance("AES/OFB/PKCS5Padding");         cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivSpec);          byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes());         String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);          System.out.println("Encrypted Text: " + encryptedText);     } } 
  1. 计数器模式 (Counter Mode, CTR)
import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.util.Base64;  public class AESExample {     public static void main(String[] args) throws Exception {         String plaintext = "Hello, World!";         String key = "0123456789abcdef"; // 16字节的AES密钥         String iv = "fedcba9876543210"; // 16字节的初始化向量          SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!