AES 将任何 java 对象加密为 Base64 字符串

arraysJava

1个回答

写回答

1之后

2025-06-14 21:55

+ 关注

Java
Java

使用AES将Java对象加密为Base64字符串

在现代互联网时代,数据安全是至关重要的一环。为了确保敏感信息不被未授权访问,加密成为了一种常见的手段。本文将介绍如何使用AES(Advanced Encryption Standard)算法将Java对象加密为Base64字符串,从而提高数据的安全性。

1. AES简介

AES是一种对称加密算法,被广泛用于保护敏感数据的安全性。其高度的安全性和效率使其成为当前加密标准的首选。AES有不同的密钥长度,包括128位、192位和256位,其中128位是最常用的。

2. Java中的AES加密

Java提供了Javax.crypto包,其中包含了实现AES加密的类。以下是一个简单的Java代码示例,演示如何使用AES将Java对象加密为Base64字符串。

Java

import Javax.crypto.Cipher;

import Javax.crypto.KeyGenerator;

import Javax.crypto.SecretKey;

import Java.nio.charset.StandardCharsets;

import Java.util.Base64;

public class AESEncryption {

public static String encryptObject(Object object, SecretKey secretKey) throws Exception {

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

cipher.init(Cipher.ENCRYPT_MODE, secretKey);

byte[] objectBytes = SerializationUtils.serialize(object);

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

return Base64.getEncoder().encodeToString(encryptedBytes);

}

public static Object decryptObject(String encryptedBase64, SecretKey secretKey) throws Exception {

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

cipher.init(Cipher.DECRYPT_MODE, secretKey);

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

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

return SerializationUtils.deserialize(decryptedBytes);

}

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

// 生成AES密钥

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

keyGenerator.init(128);

SecretKey secretKey = keyGenerator.generateKey();

// 待加密的Java对象

User user = new User("John Doe", "john@example.com");

// 加密对象

String encryptedBase64 = encryptObject(user, secretKey);

System.out.println("Encrypted Base64: " + encryptedBase64);

// 解密对象

User decryptedUser = (User) decryptObject(encryptedBase64, secretKey);

System.out.println("Decrypted User: " + decryptedUser);

}

}

3. 实现对象序列化

在上述代码中,我们使用了SerializationUtils类来进行对象的序列化和反序列化。请确保你的User类实现了Serializable接口。

Java

import Java.io.Serializable;

public class User implements Serializable {

private static final long serialVersionUID = 1L;

private String name;

private String emAIl;

public User(String name, String emAIl) {

this.name = name;

this.emAIl = emAIl;

}

@Override

public String toString() {

return "User{" +

"name='" + name + '%%'' +

", emAIl='" + emAIl + '%%'' +

'}';

}

}

4.

通过使用AES算法,我们可以轻松地将Java对象加密为Base64字符串,从而保护敏感数据免受未授权访问。在实际应用中,请妥善管理密钥以确保数据的安全性。希望本文能够帮助你更好地理解如何在Java中使用AES进行加密操作。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号