public void ZeroPaddingVector(byte[] input, int blockSize, byte[] reference) { var blkCipher = new NoOpSingleBlockTransform(blockSize); var enc = new ZerosPaddingTransform(blkCipher, false); var padded = enc.TransformFinalBlock(input, 0, input.Length); Assert.Equal(reference.AsEnumerable(), padded); Assert.True(enc.CanReuseTransform); Assert.False(enc.CanTransformMultipleBlocks); }
public void Pkcs7PaddingVector(byte[] input, int blockSize, byte[] reference) { var blkCipher = new NoOpSingleBlockTransform(blockSize); var enc = new PaddingTransform(blkCipher, PaddingMode.PKCS7, false); var dec = new PaddingTransform(blkCipher, PaddingMode.PKCS7, true); var padded = enc.TransformFinalBlock(input, 0, input.Length); Assert.Equal(reference.AsEnumerable(), padded); using (var unPadded = new MemoryStream()) { using (var cryptoStream = new CryptoStream(unPadded, dec, CryptoStreamMode.Write)) { for (var i = 0; i < padded.Length; i += blockSize) { cryptoStream.Write(padded, i, blockSize); } } Assert.Equal(input.AsEnumerable(), unPadded.ToArray()); } Assert.True(enc.CanReuseTransform); Assert.False(enc.CanTransformMultipleBlocks); }