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

使用Java实现AES加密算法函数

发布时间:2023-06-22 07:19:53

Java是一种常用的编程语言,广泛应用于各种领域,包括数据加密。本文将介绍如何使用Java实现AES加密算法函数。

AES是一种对称加密算法,使用相同的密钥进行加密和解密。它使用了一个小的密钥(128位、192位或256位),并将数据分成块(128位),然后对每个块进行加密。这种算法在安全性和效率之间找到了一个良好的平衡,并被广泛用于各种应用程序中。

Java提供了一个名为Cipher的类,可以使用它来实现AES算法。下面是Java代码,使用AES加密算法对数据进行加密:

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

public class AES {
    private static final String ALGORITHM = "AES/ECB/PKCS5Padding";
    private static final String SECRET_KEY = "secretkey";

    public static String encrypt(String text) throws Exception {
        SecretKeySpec secretKeySpec = new SecretKeySpec(SECRET_KEY.getBytes(), "AES");
        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
        byte[] encrypted = cipher.doFinal(text.getBytes());
        return Base64.getEncoder().encodeToString(encrypted);
    }

    public static String decrypt(String cipherText) throws Exception {
        SecretKeySpec secretKeySpec = new SecretKeySpec(SECRET_KEY.getBytes(), "AES");
        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
        byte[] original = cipher.doFinal(Base64.getDecoder().decode(cipherText));
        return new String(original);
    }

    public static void main(String[] args) throws Exception {
        String text = "Hello World!";
        String cipherText = encrypt(text);
        System.out.println("Original Text : " + text);
        System.out.println("Encrypted Text : " + cipherText);
        System.out.println("Decrypted Text : " + decrypt(cipherText));
    }
}

首先,我们使用SecretKeySpec创建一个AES密钥对象。然后,我们使用Cipher.getInstance (ALGORITHM)创建Cipher对象,它是用于加密和解密的对象。在通过Cipher进行加密/解密之前,我们需要通过调用cipher.init()方法来初始化Cipher。该方法有两个参数:操作模式和密钥对象。对于加密,我们使用Cipher.ENCRYPT_MODE (操作模式)和AES密钥对象。对于解密,我们使用Cipher.DECRYPT_MODE(操作模式)和AES密钥对象。

完成加密/解密操作后,我们可以使用Base64将加密的二进制数据编码为字符串,以方便传输和存储。

在上面的代码中,还使用了一个常量ALGORITHM和SECRET_KEY,这些常量定义了加密算法和密钥值。在实际应用中,应该使用更强大的密钥和更复杂的算法。

该代码通过main()方法调用encrypt()和decrypt()方法,以演示AES加密和解密。输入“Hello World!”字符串,获取加密后的字符串并进行解密。如果一切正常,加密后的字符串应该是不可读的。