public override void Write(byte[] buffer, int offset, int count) { if (mode == CryptoMode.Decrypt) { throw new NotSupportedException("This stream does not Decrypt via Write()"); } if (count == 0) { return; } byte[] plaintext = null; if (offset != 0) { plaintext = new byte[count]; Buffer.BlockCopy(buffer, offset, plaintext, 0, count); } else { plaintext = buffer; } byte[] encrypted = encryptor.Encrypt(plaintext, count); stream.Write(encrypted, 0, encrypted.Length); }
public static PkwareTraditionalEncryptionData ForWrite(string password, uint crc, out byte[] encryptionHeader) { var encryptor = new PkwareTraditionalEncryptionData(password); var random = new Random(); var plainTextHeader = new byte[12]; random.NextBytes(plainTextHeader); plainTextHeader[11] = (byte)((crc >> 24) & 0xff); encryptionHeader = encryptor.Encrypt(plainTextHeader, plainTextHeader.Length); return(encryptor); }
public static PkwareTraditionalEncryptionData ForWrite(string password, DateTime?modificationTime, out byte[] encryptionHeader) { var encryptor = new PkwareTraditionalEncryptionData(password); var random = new Random(); var plainTextHeader = new byte[12]; random.NextBytes(plainTextHeader); uint timeBlob = modificationTime.DateTimeToDosTime(); plainTextHeader[11] = (byte)((timeBlob >> 8) & 0xff); encryptionHeader = encryptor.Encrypt(plainTextHeader, plainTextHeader.Length); return(encryptor); }