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

利用Java函数实现AES加解密算法

发布时间:2023-08-18 16:01:03

在Java中,可以使用javax.crypto包中的Cipher类实现AES加解密算法。下面我会给出一种简单的实现方式,供参考。

首先,需要导入javax.crypto包中的相关类:

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

然后,定义一个加密函数,用于将明文进行加密:

public static byte[] encrypt(String plainText, String encryptionKey) throws Exception {
    // 创建AES加密算法实例
    Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
    
    // 创建AES密钥对象
    SecretKeySpec key = new SecretKeySpec(encryptionKey.getBytes("UTF-8"), "AES");
    
    // 初始化加密算法实例
    cipher.init(Cipher.ENCRYPT_MODE, key);
    
    // 执行加密操作
    return cipher.doFinal(plainText.getBytes("UTF-8"));
}

接下来,定义一个解密函数,用于将密文进行解密:

public static String decrypt(byte[] cipherText, String encryptionKey) throws Exception{
    // 创建AES解密算法实例
    Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
    
    // 创建AES密钥对象
    SecretKeySpec key = new SecretKeySpec(encryptionKey.getBytes("UTF-8"), "AES");
    
    // 初始化解密算法实例
    cipher.init(Cipher.DECRYPT_MODE, key);
    
    // 执行解密操作
    byte[] plainTextBytes = cipher.doFinal(cipherText);
    
    // 将解密结果转换为字符串
    return new String(plainTextBytes, "UTF-8");
}

最后,可以编写一个测试函数来测试加解密算法的功能:

public static void main(String[] args) {
    try {
        // 定义明文和密钥
        String plainText = "Hello, world!";
        String encryptionKey = "AESKEY1234567890";
        
        // 加密明文
        byte[] cipherText = encrypt(plainText, encryptionKey);
        
        // 将密文转换为十六进制字符串输出
        System.out.println("Cipher text: " + bytesToHexString(cipherText));
        
        // 解密密文
        String decryptedText = decrypt(cipherText, encryptionKey);
        
        // 输出解密结果
        System.out.println("Decrypted text: " + decryptedText);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

以上就是一个简单的使用Java函数实现AES加解密算法的示例。注意,实际使用中需要保证密钥的安全性,避免泄露。