📅  最后修改于: 2023-12-03 15:32:04.915000             🧑  作者: Mango
密码学是研究信息安全的学科,通过使用密码算法保护信息,从而防止信息被非法获取、窃取、篡改、伪造等攻击方式。密码学包括对称加密算法、非对称加密算法、哈希函数等。
非对称加密算法也称为公钥密码算法,其加密和解密使用两个不同的密钥。公钥是公开的,任何人都可以获得,而私钥只有密钥的所有者才持有。公钥用于加密数据,私钥则被用于解密数据。
Java中的非对称加密主要是通过java.security
包中的KeyPairGenerator
类和Cipher
类来实现的。其中,KeyPairGenerator
用于生成公私密钥对,Cipher
则用于加解密数据。
以下是使用RSA算法对数据进行加解密的示例代码:
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import javax.crypto.Cipher;
public class RSAEncryption {
public static void main(String[] args) throws Exception {
String plainText = "Hello, world!";
// 生成密钥对
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
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(plainText.getBytes());
System.out.println("Encrypted data: " + new String(encryptedData));
// 解密数据
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedData = cipher.doFinal(encryptedData);
System.out.println("Decrypted data: " + new String(decryptedData));
}
}
非对称加密算法在信息安全领域广泛应用,Java中提供了RSA算法实现非对称加密。程序员可以通过java.security
包中的KeyPairGenerator
和Cipher
类来生成密钥对并加解密数据。