public byte[] EncryptRecord(byte[] fragment, byte[] mac) { int num = fragment.Length + mac.Length; int num2 = 0; if (CipherMode == CipherMode.CBC) { num++; num2 = blockSize - num % (int)blockSize; if (num2 == blockSize) { num2 = 0; } num += num2; } byte[] array = new byte[num]; Buffer.BlockCopy(fragment, 0, array, 0, fragment.Length); Buffer.BlockCopy(mac, 0, array, fragment.Length, mac.Length); if (num2 > 0) { int num3 = fragment.Length + mac.Length; for (int i = num3; i < num3 + num2 + 1; i++) { array[i] = (byte)num2; } } EncryptionCipher.TransformBlock(array, 0, array.Length, array, 0); return(array); }
public byte[] EncryptRecord(byte[] fragment, byte[] mac) { // Encryption ( fragment + mac [+ padding + padding_length] ) var length = fragment.Length + mac.Length; var padlen = 0; if (CipherMode == CipherMode.CBC) { // Calculate padding_length length++; // keep an extra byte padlen = blockSize - length % blockSize; if (padlen == blockSize) { padlen = 0; } length += padlen; } var plain = new byte [length]; Buffer.BlockCopy(fragment, 0, plain, 0, fragment.Length); Buffer.BlockCopy(mac, 0, plain, fragment.Length, mac.Length); if (padlen > 0) { var start = fragment.Length + mac.Length; for (var i = start; i < start + padlen + 1; i++) { plain[i] = (byte)padlen; } } EncryptionCipher.TransformBlock(plain, 0, plain.Length, plain, 0); return(plain); }