欢迎访问宙启技术站
智能推送

如何使用Java函数实现RSA加密和解密算法

发布时间:2023-06-18 01:23:07

RSA加密和解密算法是非对称加密算法,可用于加密传输信息或签名验证等应用场景。在Java中,使用Java库中提供的函数可方便地实现RSA加密和解密算法。

一、生成RSA密钥对

在Java中,可通过KeyPairGenerator类生成RSA密钥对,代码如下:

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
KeyPair keyPair = keyGen.generateKeyPair();

其中,第一行创建KeyPairGenerator对象,指定使用RSA算法;第二行指定密钥长度为1024位;第三行生成RSA密钥对。

二、RSA加密

RSA加密过程中,用公钥对明文进行加密,可通过Cipher类实现,代码如下:

PublicKey publicKey = keyPair.getPublic();
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedBytes = cipher.doFinal(plainText.getBytes());

其中,第一行获取公钥对象;第二行创建Cipher对象,指定使用RSA算法;第三行进行初始化,指定加密模式和公钥对象;第四行调用doFinal方法进行加密操作,返回密文的字节数组。

三、RSA解密

RSA解密过程中,用私钥对密文进行解密,同样可通过Cipher类实现,代码如下:

PrivateKey privateKey = keyPair.getPrivate();
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);

其中,第一行获取私钥对象;第二行创建Cipher对象,指定使用RSA算法;第三行进行初始化,指定解密模式和私钥对象;第四行调用doFinal方法进行解密操作,返回明文的字节数组。

四、完整代码示例

以下为完整的RSA加密解密代码示例:

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import javax.crypto.Cipher;

public class RSAExample {

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

        String plainText = "This is the message to be encrypted.";

        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
        keyGen.initialize(1024);
        KeyPair keyPair = keyGen.generateKeyPair();

        PublicKey publicKey = keyPair.getPublic();
        PrivateKey privateKey = keyPair.getPrivate();

        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] encryptedBytes = cipher.doFinal(plainText.getBytes());

        cipher.init(Cipher.DECRYPT_MODE, privateKey);
        byte[] decryptedBytes = cipher.doFinal(encryptedBytes);

        String decryptedText = new String(decryptedBytes);

        System.out.println("Plain text: " + plainText);
        System.out.println("Encrypted text: " + new String(encryptedBytes));
        System.out.println("Decrypted text: " + decryptedText);
    }
}

以上为使用Java函数实现RSA加密和解密算法的相关介绍。