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

Java函数开发:实现一组数据的加密和解密功能

发布时间:2023-07-28 12:48:29

在Java中,可以使用一些标准的加密算法来实现数据的加密和解密功能,如AES(高级加密标准)、DES(数据加密标准)等。以下是一个简单的示例,演示了如何使用AES算法进行数据的加密和解密。

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class EncryptionUtils {

    // AES加密
    public static String encrypt(String plainText, String key) {
        try {
            SecretKeySpec secretKey = generateSecretKey(key);
            Cipher cipher = Cipher.getInstance("AES");
            cipher.init(Cipher.ENCRYPT_MODE, secretKey);
            byte[] cipherText = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8));
            return Base64.getEncoder().encodeToString(cipherText);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    // AES解密
    public static String decrypt(String cipherText, String key) {
        try {
            SecretKeySpec secretKey = generateSecretKey(key);
            Cipher cipher = Cipher.getInstance("AES");
            cipher.init(Cipher.DECRYPT_MODE, secretKey);
            byte[] plainText = cipher.doFinal(Base64.getDecoder().decode(cipherText));
            return new String(plainText, StandardCharsets.UTF_8);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    // 生成密钥
    private static SecretKeySpec generateSecretKey(String key) throws Exception {
        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
        keyGenerator.init(128);
        SecretKey secretKey = keyGenerator.generateKey();
        return new SecretKeySpec(secretKey.getEncoded(), "AES");
    }

    public static void main(String[] args) {
        String plainText = "Hello, world!";
        String key = "my-secret-key";

        String cipherText = encrypt(plainText, key);
        System.out.println("Cipher text: " + cipherText);

        String decryptedText = decrypt(cipherText, key);
        System.out.println("Decrypted text: " + decryptedText);
    }
}

在上述示例代码中,encrypt函数使用AES算法对输入的明文进行加密,decrypt函数使用AES算法对输入的密文进行解密。使用时只需要传入明文或密文以及密钥即可获得对应的加密或解密结果。

需要注意的是,密钥的安全性非常重要。在实际应用中, 随机生成一个密钥,而不是直接使用固定的密钥。此外,还可以考虑使用更高级的加密算法,或者结合其他的加密手段,以提高数据的安全性。