使用C#.NET RSA加密数据时出现未指定的错误

时间:2009-09-08 00:46:33

标签: c# rsa encryption

我不知道如何描述我的问题。这是加密字节数组的最简单方法,我在.Encrypt(...)方法中得到“Unspecified Error”。

byte[] cleartext =
{
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x71, 0x77, 0x65, 0x72, 0x74, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x61, 0x73, 0x64, 0x66, 0x67, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

Logger.Hex("Clear test login text", cleartext);

byte[] ciphered = new RSACryptoServiceProvider(1024).Encrypt(cleartext, false);

Logger.Hex("Ciphered test login text", ciphered);

Console.Read();

注意:Logger.Hex显示字节数组的十六进制字符串表示形式。什么都没有干扰。

1 个答案:

答案 0 :(得分:3)

您使用的是1024位(128字节)的密钥大小和PKCS#1 v1.5填充,并将128字节的数组传递给Encrypt

来自MSDN

                                     Maximum Length of rgb Parameter

Direct Encryption (PKCS#1 v1.5)      Modulus size - 11. (11 bytes is the
                                     minimum padding possible.)

因此,您的1024位密钥太小,无法加密128个字节。您是否尝试过增加密钥大小?