【问题标题】:encrypt encrypted data加密加密数据
【发布时间】:2012-04-09 11:32:14
【问题描述】:

我想加密我使用 RSA 加密的加密数据。但是当我使用另一个公钥加密加密数据时。错误是“未指定的错误”

我认为是密钥大小的问题。

我的密钥大小是 1024 位。

简要源代码:

  1. 第一步:使用密钥大小为 1024 位的 RSA 公钥加密数据

    byte[] encryptedData = RSAalg.Encrypt(dataToEncrypt, false);
    
  2. 第二步:使用另一个密钥大小为 1024 位的 RSA 公钥加密数据

    byte[] encryptedData1 = RSAalg1.Encrypt(encryptedData, false);
    

错误显示在第二步。我该如何解决这个问题?

【问题讨论】:

    标签: c# encryption cryptography rsa


    【解决方案1】:

    由于填充,您无法使用 1024 位密钥加密 1024 位数据(encryptedData 应该是这样)。

    如果您使用的是 .NET 和 C#,则使用 false 加密意味着您使用 PKCS#1 填充,它(从内存中)将允许您加密 117 个字节(而不是 128 个字节)。

    注意:您不应该重复第二次加密来获得结果 - 但您应该问自己为什么要使用两个密钥(具有相同的密钥长度)对该数据进行两次加密。如果您想要更高的安全性,那么您应该使用更大的密钥(一次)。 OTOH,如果您想要多个密钥来解密数据,那么您需要一种不同的策略。

    【讨论】:

    • 我想通过与不同人使用的拖车钥匙进行安全的电子投票......这让我可以确保数据不会被解密,除非拖车钥匙解密数据...... .
    • 我想通过使用两个不同的密钥进行安全的电子投票......这使我可以确保除非存在两个密钥,否则数据不会被解密......当第一次加密数据时已经用第一个密钥完成了。。我再做第二次加密,用第二个密钥加密第一步,请指教。
    • 这不是一个新问题,您可以通过谷歌搜索找到很多的相关文献。一种方法是使用随机对称密钥(例如 256 位 AES)加密数据,前半部分(128 位)使用 RSA-1,后半部分(128 位)使用 RSA-2。
    猜你喜欢
    • 2021-11-29
    • 1970-01-01
    • 2016-06-10
    • 2013-09-18
    • 1970-01-01
    • 2011-03-12
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多