【问题标题】:Modification of rsa encrypted cipher textrsa加密密文的修改
【发布时间】:2017-10-30 20:34:11
【问题描述】:

我有以下问题:

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

中间人是否有可能更改密文的部分内容,以便解密得到修改后的文本?

我自己在我的 Java 应用程序中尝试过这个,但如果我这样做,我总是会得到 ​​p>


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]

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

问候

【问题讨论】:

  • 取决于您使用的填充算法。但我不认为填充旨在用作完整性检查。
  • 您使用的是哪种填充算法?
  • 更新问题。
  • @PeterBruins 是正确的,pkcs#1 块类型 1 填充不打算用作加密完整性检查。对输出的随机更改不太可能导致由当前版本的 Oracle 提供程序进行有效解密,但密码分析者很聪明,并且会做一些更聪明的事情。例如,他们可能将两个或多个密文相乘以 mod N。
  • “我使用 RSA 私钥加密给定的纯文本。”。你应该停止right there。使用 RSA 私钥加密不是签名生成并且它也不提供消息的机密性;它不是一个安全的密码。您使用公钥加密并使用私钥解密,句号

标签: encryption rsa private-key


【解决方案1】:

这个问题的正确答案是 Maarten Bodewes 给出的:

“我使用 RSA 私钥加密给定的纯文本。”。你应该停在那里。使用 RSA 私钥加密不是签名生成,它也不提供消息的机密性;它不是一个安全的密码。您使用公钥加密并使用私钥解密。 ——

【讨论】:

    猜你喜欢
    • 2014-12-28
    • 2023-04-05
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 2012-03-13
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多