Java 字符串加密和解密:全面指南165


在 Java 中,字符串加密和解密是数据安全和隐私至关重要的方面。本文将深入探讨 Java 中常见的加密和解密算法,并提供分步指南和代码示例,以帮助您实施这些算法来保护您的敏感数据。

Java 中的加密算法

Java 提供了几种内置的加密算法,包括:* AES (Advanced Encryption Standard):这是一个对称密钥算法,用于加密和解密数据。
* DES (Data Encryption Standard):这是一个过时的对称密钥算法,但仍用于一些遗留系统。
* RSA (Rivest-Shamir-Adleman):这是一个非对称密钥算法,用于数字签名和密钥交换。
* MD5 (Message Digest 5):这是一个哈希函数,用于创建数据的不可逆摘要。

加密 Java 字符串

要在 Java 中加密字符串,可以执行以下步骤:
生成一个密钥。对于对称密钥算法,使用 SecretKeyGenerator 类。对于非对称密钥算法,使用 KeyPairGenerator 类。
使用密钥创建加密器。对于对称密钥算法,使用 Cipher 类。对于非对称密钥算法,使用 Cipher 类并指定密钥类型(例如,RSA/ECB/PKCS1Padding)。
将字符串字节转换为字节数组。
使用加密器对字节数组进行加密。
将加密后的字节数组编码为 Base64 或其他编码格式,以便于存储和传输。

解密 Java 字符串

要解密 Java 中的加密字符串,可以执行以下步骤:
使用相同的密钥创建解密器。对于对称密钥算法,使用 Cipher 类。对于非对称密钥算法,使用 Cipher 类并指定密钥类型(例如,RSA/ECB/PKCS1Padding)。
将编码后的字符串解码为字节数组。
使用解密器对字节数组进行解密。
将解密后的字节数组转换为字符串。

代码示例

以下代码示例展示了如何使用 AES 对称密钥算法加密和解密 Java 字符串:```java
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import .Base64;
public class AESEncryptionExample {
private static final String SECRET_KEY = "mySecretKey";
public static void main(String[] args) throws Exception {
// 将字符串转换为字节数组
String plaintext = "Hello world!";
byte[] plaintextBytes = (StandardCharsets.UTF_8);
// 生成随机初始化向量 (IV)
SecureRandom random = new SecureRandom();
byte[] iv = new byte[16];
(iv);
// 从密码生成密钥
SecretKeyFactory factory = ("PBKDF2WithHmacSHA256");
PBEKeySpec spec = new PBEKeySpec((), iv, 65536, 256);
SecretKey key = (spec);
SecretKeySpec secretKeySpec = new SecretKeySpec((), "AES");
// 创建加密器并加密
Cipher cipher = ("AES/CBC/PKCS5Padding");
(Cipher.ENCRYPT_MODE, secretKeySpec, new IvParameterSpec(iv));
byte[] encryptedBytes = (plaintextBytes);
// 对加密后的字节数组进行 Base64 编码
String encodedEncryptedBytes = ().encodeToString(encryptedBytes);
// 解密
(Cipher.DECRYPT_MODE, secretKeySpec, new IvParameterSpec(iv));
byte[] decryptedBytes = (().decode(encodedEncryptedBytes));
// 将解密后的字节数组转换为字符串
String decryptedPlaintext = new String(decryptedBytes, StandardCharsets.UTF_8);
("原字符串: " + plaintext);
("加密后字符串: " + encodedEncryptedBytes);
("解密后字符串: " + decryptedPlaintext);
}
}
```

Java 提供了多种加密和解密算法,用于保护敏感数据。通过在您的应用程序中实施这些算法,您可以确保数据免遭未经授权的访问和篡改。本指南提供了分步指南和代码示例,以帮助您轻松实现这些算法,并维护您应用程序的安全性。

2024-11-22


上一篇:掌握 Java 中 String 类型转字节的技巧

下一篇:如何用 Java 判断字符是否是汉字