📜  Java的非对称加密密码学(1)

📅  最后修改于: 2023-12-03 15:32:04.915000             🧑  作者: Mango

Java的非对称加密密码学

密码学简介

密码学是研究信息安全的学科,通过使用密码算法保护信息,从而防止信息被非法获取、窃取、篡改、伪造等攻击方式。密码学包括对称加密算法、非对称加密算法、哈希函数等。

非对称加密算法

非对称加密算法也称为公钥密码算法,其加密和解密使用两个不同的密钥。公钥是公开的,任何人都可以获得,而私钥只有密钥的所有者才持有。公钥用于加密数据,私钥则被用于解密数据。

Java中的非对称加密

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包中的KeyPairGeneratorCipher类来生成密钥对并加解密数据。