Encryption rsa加密密码文本的修改

Encryption rsa加密密码文本的修改,encryption,rsa,private-key,Encryption,Rsa,Private Key,我有以下问题: 我使用RSA私钥加密给定的纯文本。我想通过不安全的通道将其发送到另一个应用程序。另一个应用程序只知道公钥 中间的人有可能改变密码文本的部分,使解密结果修改为文本? 我自己在Java应用程序中尝试过这一点,但如果我这样做,我总是会 我在Java应用程序中使用算法“RSA/ECB/PKCS1Padding”进行加密和解密 关于问题的正确答案由Maarten Bodewes给出: “我使用RSA私钥加密给定的纯文本。”。你应该马上停下来。使用RSA私钥进行加密不是生成签名,也不提供消

我有以下问题:


我使用RSA私钥加密给定的纯文本。我想通过不安全的通道将其发送到另一个应用程序。另一个应用程序只知道公钥

中间的人有可能改变密码文本的部分,使解密结果修改为文本?

我自己在Java应用程序中尝试过这一点,但如果我这样做,我总是会

我在Java应用程序中使用算法“RSA/ECB/PKCS1Padding”进行加密和解密


关于

问题的正确答案由Maarten Bodewes给出:


“我使用RSA私钥加密给定的纯文本。”。你应该马上停下来。使用RSA私钥进行加密不是生成签名,也不提供消息的机密性;这不是一个安全的密码。您使用公钥加密,并使用私钥(句号)解密


取决于您使用的填充算法。但我不认为填充是用于完整性检查的。您使用的填充算法是什么?更新的问题。@Peterb废墟是正确的,pkcs#1块类型1填充不用于加密完整性检查。对输出的随机更改不太可能导致当前版本的Oracle provider进行有效解密,但密码分析师很聪明,会做一些更聪明的事情。例如,他们可能将两个或多个密文相乘,mod N.“我使用RSA私钥加密给定的纯文本。”。你应该停下来。使用RSA私钥进行加密不是生成签名,也不提供消息的机密性;这不是一个安全的密码。用公钥加密,用私钥解密,句号。

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]