【问题标题】:RSA Encryption in Java/.NET and decryption in .NETJava/.NET 中的 RSA 加密和 .NET 中的解密
【发布时间】:2011-08-19 02:19:05
【问题描述】:

我的应用程序具有 Java 和 .NET 客户端,并且我的应用程序位于 .NET 中。我的客户将向我发送一个使用 RSA 公钥加密的 XML 文件,我需要使用 .NET 对其进行解密

对于字符串“Achinth Anand Gurkhi”,Java RSA 加密方法会生成以下加密字符串:

e8s2Ap3R1AwoaKB7OPCwkf0vhAVGaQisdoq2Yo0BvwcQ7v3oVtMOVc5wsnIyNVOSZV543imwIiBer0HSXRe8PoBD4jj0tTxtLA+bdoR40oQJD2UmZ4OpAH3g92wLXYd4bVvjllcCPPc0tSr/nzEKeZHcnhf6cGpuwfKyFNbXW2vtlEfmRd+LGqlixPRlx1OnsSMNNw+u/5IBs8MauY4Uwq1Lovlgd9f/8WTOvq9ityr84vGLMRGs4wpC7+fFNk8jGuNZgoCDLZw2RqrUd8FBFvN2wCRZXnS7Wg4QjiBdmnq0OsAwK9OFwqnil7DNnDnlytlecR5oYkDhO2fC4FzFiA==

对于相同的字符串,.NET RSA 加密方法使用 Java 程序使用的相同公钥生成以下加密字符串:

iJO4hwhXGX27jzK87X9gxzzbKpgf7FKhe6UcY7eoiCpLskOatgCMZTm0aTDuwRZGJGbZCIZt+JI9X8LxwOLmIbv5LGyDq+a8jkrPu+pDRvg2uRuKeQj2yBRcp36X+xFf61ux24NaX2RTCY9YfJcUis9NjEkL0eQ3gC79xO0vuBjaUA2oYOt0Mlr7DmKE+b0lz25J/WJuSW83g2oZOlvJ4RnsrFChu0vHnkHCQo9JVjhMc+Onj7+lbI1CDgGq4XigZrHt+j564y3sc3z0oQYfdZkF3yUZrzd3sJjd9KmryHf52eVb9/qgL2/Za1jUwTzKIOvtG/bQpR2ka7Qu1ZqbxQ==

但我使用匹配私钥的 .NET 解密方法能够将两者解密回相同的字符串“Achinth Anand Gurkhi”。不同的加密字符串怎么可能返回相同的值?

【问题讨论】:

标签: c# java .net encryption rsa


【解决方案1】:

这可能是因为Random Padding

【讨论】:

    【解决方案2】:

    这次你可能很幸运,没有被它咬到(可能是因为你的示例文件只有一个块),但你需要确保加密器和解密器的密码模式相同。

    在 .NET 中,密码模式由密码的 @987654321@ 属性控制。在Java中,它由@987654322@transformation参数的第二个和第三个字段控制

    两个平台(.NET 中的 CBC,Java 中的 ECB)之间的默认模式也不同,如果您忽略在任一侧设置模式,这可能会让您感到困惑。

    【讨论】:

      【解决方案3】:

      您尚未指定在每种情况下如何加密它们,但标准方法是生成一个随机对称密钥,用该密钥加密消息,然后用公钥加密对称密钥,然后发送两者。因此,即使使用相同的代码,使用相同的密钥加密相同的消息也会产生不同的结果。这是意料之中的,它是一项功能,而不是错误:这意味着攻击者也无法判断您是否多次发送相同的消息。

      【讨论】:

        【解决方案4】:

        据我所知,公钥/私钥对是这样的:

        使用公钥对数据进行加密。使用私钥解密。即公钥和私钥是相反的。

        在通信通道之间,一端(源)与另一端(目的地)共享公钥。现在源使用私钥加密其数据并将其发送到目标。 Dest 应用源共享的公钥对其进行解密。

        这可能是怎么回事:.NET 和 JAVA 的私钥不同,但对应的公钥必须是各自私钥的倒数。

        这些密钥可能会考虑主机名/ip/或任何东西(我不确定)来生成公钥/私钥对。
        The public key encrytion needs two keys which are inverse of each other but not necessarily the encrypted data be same

        有什么建议/建议吗?

        【讨论】:

          猜你喜欢
          • 2014-06-02
          • 1970-01-01
          • 1970-01-01
          • 2011-07-04
          • 2011-01-29
          • 1970-01-01
          • 2011-02-06
          • 2011-08-06
          相关资源
          最近更新 更多