Hello:

How the padding length has the same value as each byte on the padding i
think this is correct on decryption you have (i'm not using PKCS7 for this):


fragment + mac + padding + padding length


To clarify this a little here is the code i'm using for encrypt a message.

Using PKCS7 as padding:

public byte[] EncryptRecord(byte[] fragment, byte[] mac)
{
// Encryption ( fragment + mac [+ padding + padding_length] )
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, encryptionCipher, CryptoStreamMode.Write);


cs.Write(fragment, 0, fragment.Length);
cs.Write(mac, 0, mac.Length);
if (cipherMode == CipherMode.CBC)
{
// Calculate padding_length
int fragmentLength = fragment.Length + mac.Length + 1;
int paddingLength = (((fragmentLength/blockSize)*8) + blockSize) - fragmentLength;


                // Write padding length byte
                cs.WriteByte((byte)paddingLength);
        }
        cs.Close();

        return ms.ToArray();
}


Using None as Padding:


public byte[] EncryptRecord(byte[] fragment, byte[] mac)
{
// Encryption ( fragment + mac [+ padding + padding_length] )
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, encryptionCipher, CryptoStreamMode.Write);


cs.Write(fragment, 0, fragment.Length);
cs.Write(mac, 0, mac.Length);
if (cipherMode == CipherMode.CBC)
{
// Calculate padding_length
int fragmentLength = fragment.Length + mac.Length + 1;
int paddingLength = (((fragmentLength/blockSize)*8) + blockSize) - fragmentLength;


                // Write padding + padding length bytes
                for (int i = 0; i <= paddingLength; i++)
                {
                        cs.WriteByte((byte)paddingLength);
                }
        }
        cs.Close();

        return ms.ToArray();
}





--
Best regards

Carlos Guzm�n �lvarez
Vigo-Spain

_______________________________________________
Mono-list maillist  -  [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to