91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

java怎么實現AES的五種加密模式

小億
91
2023-12-29 16:21:56
欄目: 編程語言

在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(), "

0
江孜县| 化隆| 共和县| 临朐县| 安平县| 肥城市| 黄石市| 灵璧县| 阿拉善盟| 镇远县| 永春县| 禄丰县| 南平市| 太康县| 乌恰县| 延庆县| 平潭县| 桓台县| 湘阴县| 枣阳市| 黎川县| 江山市| 金溪县| 孟州市| 始兴县| 郸城县| 上林县| 句容市| 辛集市| 澄迈县| 沁阳市| 朔州市| 岚皋县| 胶南市| 高雄市| 华宁县| 莆田市| 花莲县| 安丘市| 陇川县| 锡林浩特市|