java bouncycastle中的RSA-密文随机化是如何获得的?

java bouncycastle中的RSA-密文随机化是如何获得的?,java,cryptography,rsa,bouncycastle,Java,Cryptography,Rsa,Bouncycastle,我正在为我的应用程序RSA crypto实际使用bouncycastle库。 我的问题是:当我使用同一个密钥对一个明文加密两次时,它将导致两个不同的密文,因此在bouncycastles实现中必须有某种随机化(RSA本身不是随机化的,所以enc(a,k)总是相同的) 谁能告诉我,这是怎么做到的?我发现了一些关于加密致盲的东西,但对我来说,我不得不使用一些致盲引擎 这里是我的源代码: private byte[] encRSA(byte[] in, java.security.PublicKey

我正在为我的应用程序RSA crypto实际使用bouncycastle库。 我的问题是:当我使用同一个密钥对一个明文加密两次时,它将导致两个不同的密文,因此在bouncycastles实现中必须有某种随机化(RSA本身不是随机化的,所以enc(a,k)总是相同的)

谁能告诉我,这是怎么做到的?我发现了一些关于加密致盲的东西,但对我来说,我不得不使用一些致盲引擎

这里是我的源代码:

private byte[] encRSA(byte[] in, java.security.PublicKey publicKey) {
    try {
        Cipher rsaCipher = Cipher.getInstance("RSA/NONE/PKCS1Padding", "BC");
        rsaCipher.init(Cipher.ENCRYPT_MODE, publicKey);
        rsaCipher.update(in);
        return rsaCipher.doFinal();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
有人能帮我吗


谢谢

RSA输出不是随机的,但PKCS1P是随机的,每次都会导致不同的输出。有关更多信息,请参阅


实际上,需要使用随机填充来反击攻击,攻击者可以通过加密一条消息并将其与截获的加密输出进行比较来猜测消息。

如果PKCSI密码文本要通过网络发送,我们是否需要在发送前对密码文本进行编码?如果传输层不是二进制安全的,则是,在这种情况下,通常使用base64编码