2

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

我认为问题来自密钥大小。

我的密钥大小是 1024 位。

简短的源代码:

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

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

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

错误显示在第二步。我怎样才能解决这个问题?

4

1 回答 1

0

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

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

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

于 2012-04-09T15:08:03.150 回答