AES加密解密全流程演示__api基础使用

AES(Advanced Encryption Standard)即高级加密标准,是一种广泛使用的对称加密算法,由美国国家标准与技术研究院(NIST)于2001年发布,用于保护电子数据的机密性。AES算法是替代原先DES(数据加密标准)算法的,因为它提供了更高的安全性。AES加密过程是可逆的,意味着使用相同的密钥可以解密加密的数据。

 

  1. 密钥长度:AES支持三种长度的密钥:128位、192位和256位。密钥长度越长,加密过程就越复杂,破解难度也相应增加。

  2. 块大小:AES以固定长度的块(称为状态)作为加密单位,每个块的大小为128位(即16字节)。无论输入数据的大小如何,它都会被处理成这些固定大小的块。

  3. 工作模式:AES可以通过不同的工作模式来适应不同的应用场景,如ECB(电子密码本模式)、CBC(密码块链接模式)、CFB(密码反馈模式)、OFB(输出反馈模式)和CTR(计数器模式)等。每种模式都有其特定的用途和安全性考虑。

  4. 高效性:AES算法设计得非常高效,能够在软件和硬件上快速执行,使其成为许多加密应用的首选算法。

 

public static void main(String[] args) throws Exception {
        // 共同约定秘钥和加密算法
        String content = "你好,世界";
        // AES密钥长度通常为128、192或256位
        String key = "1234567812345678"; // 16字节*8
        String algorithm = "AES";
        
        System.out.println("\n-----------发送方-----------\n");

        Cipher cipher = Cipher.getInstance(algorithm);
        SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), algorithm);
        // 加密模式
        cipher.init(Cipher.ENCRYPT_MODE, keySpec);
        byte[] encryptBytes = cipher.doFinal(content.getBytes());
        String encryptText = new String(Base64.getEncoder().encode(encryptBytes)); // 密文
        System.out.println(encryptText);

        System.out.println("\n-----------接收方-----------\n");

        Cipher recieverCipher = Cipher.getInstance(algorithm);
        SecretKeySpec receiverSk = new SecretKeySpec(key.getBytes(), algorithm);
        // 解密模式
        recieverCipher.init(Cipher.DECRYPT_MODE, receiverSk);
        // 先将加密后的字符串解码回字节数据
        byte[] decodedBytes = Base64.getDecoder().decode(encryptText);
        byte[] plainBytes = recieverCipher.doFinal(decodedBytes);
        String plainText = new String(plainBytes); // 原文
        System.out.println(plainText);
    }

 

posted @ 2024-09-12 20:12  Ashe|||^_^  阅读(152)  评论(0编辑  收藏  举报