public void Encrypt(byte[] inputData, int offset, int length, Stream output, DataType dataType) { switch (getFilter(dataType)) { case CryptFilter.Identity: output.Write(inputData, offset, length); return; case CryptFilter.V2: RC4 rc4 = getRC4(_curObjectKey, _curObjectKey.Length); rc4.Crypt(inputData, offset, length, output); return; case CryptFilter.AESV3: case CryptFilter.AESV2: AES aes = getAES(_curObjectKey); aes.Encrypt(inputData, offset, length, output); return; } }
public void Decrypt(Stream input, int length, Stream output, DataType dataType) { switch (getFilter(dataType)) { case CryptFilter.Identity: for (int i = 0; i < length; ++i) { output.WriteByte((byte)input.ReadByte()); } return; case CryptFilter.V2: RC4 rc4 = getRC4(_curObjectKey, _curObjectKey.Length); rc4.Crypt(input, length, output); return; case CryptFilter.AESV2: case CryptFilter.AESV3: AES aes = getAES(_curObjectKey); aes.Decrypt(input, length, output); return; } }