Пример #1
0
        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);
        }