我不知道如何描述我的问题。这是加密字节数组的最简单方法,我在.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显示字节数组的十六进制字符串表示形式。什么都没有干扰。
答案 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个字节。您是否尝试过增加密钥大小?