【问题标题】:RSACryptoPad gives different results each timeRSACryptoPad 每次都会给出不同的结果
【发布时间】:2012-03-20 06:50:24
【问题描述】:

我正在尝试使用此处的 RSACryptoPAD 示例测试我的 RSA 实现的正确性:http://www.codeproject.com/Articles/10877/Public-Key-RSA-Encryption-in-C-NET

但它总是会产生不同的加密结果。 RSA 不只是一个 mod 和 power 操作吗?但是该程序可以正确解密所有不同的加密文本。我的结果与http://nmichaels.org/rsa.py 站点相同。我认为 RSACryptoPAD 正在做一些其他的事情?

【问题讨论】:

    标签: cryptography rsa


    【解决方案1】:

    代码使用RSACryptoServiceProvider。线

      byte[] encryptedBytes = rsaCryptoServiceProvider.Encrypt( tempBytes, true );
    

    告诉它使用OAEP padding 进行加密,这会在填充中引入随机性。这样做的原因是加密相同的明文总是会产生不同的结果(如您所见)。这是一件好事,因为它可以阻止信息泄漏,攻击者可以看到您多次发送相同的消息。

    有一个很好的历史例子来说明为什么这很重要。 "AF is short of water"

    【讨论】:

    • 谢谢。 RSACryptoServiceProvider 也反转字节,我这样做了,现在我只能解密第一个字节? ' 可逆RSAFunction privateKey; privateKey.Initialize(params.GetModulus(), params.GetPublicExponent(), params.GetPrivateExponent()); RSAES_OAEP_SHA_Decryptor 解密器(privateKey); StringSource(cipher, true, new PK_DecryptorFilter(rng, decryptor, new StringSink(ugur) ) // PK_DecryptorFilter ); // 字符串源 '
    • 请创建一个关于该 ugur 的新问题,您可以将您的代码粘贴到那里(我认为没有必要反转任何内容,但有了足够的信息我们应该能够提供帮助)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 2021-07-12
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多