欢迎访问宙启技术站
智能推送

Java函数实现AES加密算法的详解与应用示例。

发布时间:2023-06-22 01:58:17

AES(Advanced Encryption Standard,高级加密标准),是一种对称加密算法。它是以替代原来的DES算法为目的而诞生的。对于AES算法,其密钥长度支持128、192、256位。AES的加密过程是在一个四行四列的矩阵上进行的。这个矩阵称为“状态表”,在加密和解密两个方向上都会进行状态转换,AES算法中最重要的是状态转换函数。

以下是Java函数实现AES加密算法的详解和示例:

1. 导入相关类库

在Java代码中,需要导入javax.crypto类库中的Cipher和KeyGenerator类。

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

2. 生成密钥并初始化

首先可以使用KeyGenerator类生成AES算法的密钥,然后使用Cipher类来初始化加密/解密操作。

KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");

keyGenerator.init(128);

SecretKey secretKey = keyGenerator.generateKey();

Cipher cipher = Cipher.getInstance("AES");

3. 加密操作

将需要加密的明文转换为字节数组,然后使用Cipher类的encrypt()方法进行加密操作。最后将加密后的结果转换为Base64编码。

String plainText = "Hello, World!";

byte[] plainTextBytes = plainText.getBytes();

cipher.init(Cipher.ENCRYPT_MODE, secretKey);

byte[] encryptedBytes = cipher.doFinal(plainTextBytes);

String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);

4. 解密操作

将Base64编码的加密字符串解码为字节数组,然后使用Cipher类的decrypt()方法进行解密操作。最后将解密后的结果转换为字符串。

byte[] encryptedBytes = Base64.getDecoder().decode(encryptedText);

cipher.init(Cipher.DECRYPT_MODE, secretKey);

byte[] decryptedBytes = cipher.doFinal(encryptedBytes);

String decryptedText = new String(decryptedBytes);

完整代码实现如下:

import java.util.Base64;

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;

public class AESEncryptionDemo {

    public static void main(String[] args) throws Exception {

        // Generate key

        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");

        keyGenerator.init(128);

        SecretKey secretKey = keyGenerator.generateKey();

        // Initialize encryption cipher

        Cipher cipher = Cipher.getInstance("AES");

        // Encrypt

        String plainText = "Hello, World!";

        byte[] plainTextBytes = plainText.getBytes();

        cipher.init(Cipher.ENCRYPT_MODE, secretKey);

        byte[] encryptedBytes = cipher.doFinal(plainTextBytes);

        String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);

        System.out.println("Encrypted text: " + encryptedText);

        // Decrypt

        byte[] encryptedTextBytes = Base64.getDecoder().decode(encryptedText);

        cipher.init(Cipher.DECRYPT_MODE, secretKey);

        byte[] decryptedBytes = cipher.doFinal(encryptedTextBytes);

        String decryptedText = new String(decryptedBytes);

        System.out.println("Decrypted text: " + decryptedText);

    }

}

AES加密算法的应用示例:

在开发加密相关的系统时,使用AES算法进行数据加密是非常常见的。比如,在网上银行系统中,用户的敏感信息如密码、身份证号等需要进行加密保护,以防止被攻击者窃取。同时,也可以将AES算法用于网络通信的加密过程中,来保证通信双方的数据私密性和完整性。在Java开发中,实现AES加密算法非常方便,并且在系统的安全性方面有着广阔的应用前景。