I have no idea how to describe my problem. It is the simplest way to encrypt a byte array, and I literally get “Unspecified Error” at the .Encrypt(…) method.
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();
Note: Logger.Hex displays a hex string representation of the byte array. Nothing interfering.
You’re using a key size of 1024 bits (128 bytes) and PKCS#1 v1.5 padding, and you pass an array of 128 bytes to
Encrypt.From MSDN:
Maximum Length of rgb Parameter Direct Encryption (PKCS#1 v1.5) Modulus size - 11. (11 bytes is the minimum padding possible.)So your 1024-bit key is too small to encrypt 128 bytes. Have you tried increasing the key size?