Java自带加密
引言
在现代信息时代,数据的安全性和保密性越来越受到重视。很多应用程序需要对敏感数据进行加密,以确保数据在传输和存储过程中的安全。Java作为一种广泛使用的编程语言,提供了许多自带的加密算法和工具类,为开发人员提供了便利。
本文将介绍Java自带的加密算法和相关的工具类,并通过示例代码演示如何使用这些算法进行加密操作。同时,我们还将通过类图和旅行图的方式,更加直观地展示相关类和方法之间的关系。
加密算法
Java自带的加密算法包含对称加密和非对称加密两种方式。
对称加密
对称加密算法使用相同的密钥进行加密和解密操作。常见的对称加密算法有DES、AES等。Java提供了javax.crypto
包来支持对称加密算法的使用。
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
public class SymmetricEncryptionExample {
public static void main(String[] args) throws Exception {
// 生成密钥
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
SecretKey secretKey = keyGenerator.generateKey();
// 加密
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedData = cipher.doFinal("Hello World".getBytes());
// 解密
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedData = cipher.doFinal(encryptedData);
System.out.println(new String(decryptedData));
}
}
通过上述代码,我们可以实现对字符串"Hello World"的加密和解密操作。先通过KeyGenerator
生成AES算法对应的密钥,然后使用Cipher
类进行加密和解密。
非对称加密
非对称加密算法使用一对密钥,包括公钥和私钥。公钥用于加密,私钥用于解密。常见的非对称加密算法有RSA、DSA等。Java提供了java.security
包来支持非对称加密算法的使用。
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import javax.crypto.Cipher;
public class AsymmetricEncryptionExample {
public static void main(String[] args) throws Exception {
// 生成密钥对
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// 加密
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedData = cipher.doFinal("Hello World".getBytes());
// 解密
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedData = cipher.doFinal(encryptedData);
System.out.println(new String(decryptedData));
}
}
通过以上代码,我们可以实现对字符串"Hello World"的加密和解密操作。先通过KeyPairGenerator
生成RSA算法对应的密钥对,然后使用Cipher
类进行加密和解密。
工具类
除了提供加密算法的支持,Java还提供了一些工具类来简化加密操作。
MessageDigest
java.security.MessageDigest
类提供了信息摘要算法的支持,可以实现数据的哈希运算。
import java.security.MessageDigest;
import java.util.Arrays;
public class MessageDigestExample {
public static void main(String[] args) throws Exception {
// 计算SHA-256摘要
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
byte[] digest = messageDigest.digest("Hello World".getBytes());
System.out.println(Arrays.toString(digest));
}
}
通过上述代码,我们可以计算字符串"Hello World"的SHA-256摘要。
SecureRandom
java.security.SecureRandom
类提供了安全的随机数生成器,可以生成高质量的随机数。
import java.security.SecureRandom;
import java.util.Arrays;
public class SecureRandomExample {
public static void main(String[] args) throws Exception {
// 生成随机数
SecureRandom secureRandom