public KrabouilleStream(Stream inner, KrabouilleMode mode, string password) { if (inner == null) { throw new ArgumentNullException(nameof(inner)); } if (String.IsNullOrEmpty(password)) { throw new ArgumentNullException(nameof(password)); } if (!inner.CanWrite && mode == KrabouilleMode.Krabouille) { throw new ArgumentException("inner must be writable for Krabouille mode.", nameof(inner)); } if (!inner.CanRead && mode == KrabouilleMode.Unkrabouille) { throw new ArgumentException("inner must be readable for Unkrabouille mode.", nameof(inner)); } if (_mode == KrabouilleMode.Krabouille) { _workingBuffer = new byte[256]; _seed = Environment.TickCount * inner.GetHashCode(); } _secretKey = Encoding.UTF8.GetBytes(password); _inner = inner; _mode = mode; }
public KrabouilleStream(Stream innerStream, string passPhrase, KrabouilleMode mode) { _inner = innerStream; using (var d = new System.Security.Cryptography.Rfc2898DeriveBytes(passPhrase, _salt)) { _secret = d.GetBytes(111); var fourBytes = d.GetBytes(4); int seed = fourBytes[0]; seed |= fourBytes[1] << 8; seed |= fourBytes[2] << 16; seed |= fourBytes[3] << 24; _rnd = new Random(seed); } }
public KrabouilleStream(Stream inner, KrabouilleMode mode, string password) { if (inner == null) { throw new ArgumentNullException(nameof(inner)); } if (String.IsNullOrEmpty(password)) { throw new ArgumentNullException(nameof(password)); } if (!inner.CanWrite && mode == KrabouilleMode.Krabouille) { throw new ArgumentException("inner must be writable for Krabouille mode.", nameof(inner)); } if (!inner.CanRead && mode == KrabouilleMode.Unkrabouille) { throw new ArgumentException("inner must be readable for Unkrabouille mode.", nameof(inner)); } _inner = inner; _mode = mode; }