1

我不知道如何描述我的问题。这是加密字节数组的最简单方法,我在 .Encrypt(...) 方法中确实得到了“未指定错误”。

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 显示字节数组的十六进制字符串表示。没有任何干扰。

4

1 回答 1

3

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

来自MSDN

                                     rgb 参数的最大长度

直接加密 (PKCS#1 v1.5) 模数大小 - 11。(11 字节是
                                     可能的最小填充。)

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

于 2009-09-08T00:57:51.640 回答