我遇到以下问题:
我使用RSA私钥来加密给定的纯文本。我想通过不安全的渠道将其发送到另一个应用程序。另一个应用程序只知道公钥。
中间的人是否有可能更改密文的部分内容,以便解密导致修改后的文本?
我自己在我的Java应用程序中尝试过这个,但如果我这样做,我总是得到
javax.crypto.BadPaddingException: Decryption error
at sun.security.rsa.RSAPadding.unpadV15(RSAPadding.java:380) ~[na:1.8.0_131]
at sun.security.rsa.RSAPadding.unpad(RSAPadding.java:291) ~[na:1.8.0_131]
at com.sun.crypto.provider.RSACipher.doFinal(RSACipher.java:356) ~[sunjce_provider.jar:1.8.0_112]
at com.sun.crypto.provider.RSACipher.engineDoFinal(RSACipher.java:389) ~[sunjce_provider.jar:1.8.0_112]
at javax.crypto.Cipher.doFinal(Cipher.java:2048) ~[na:1.8.0_121]
我使用算法" RSA / ECB / PKCS1Padding"在我的Java应用程序中进行加密和解密。
此致
答案 0 :(得分:0)
Maarten Bodewes给出了问题的正确答案:
"我使用RSA私钥来加密给定的纯文本。"。你应该在那里停下来。使用RSA私钥进行加密不是签名生成,也不提供消息的机密性;它不是一个安全的密码。您使用公钥加密并使用私钥解密。 -