protected void Initialize(byte[] secret, byte[] label, byte[] seed) { if (secret == null || seed == null) { throw new ArgumentNullException(); } m_Disposed = false; // ls = label + seed byte[] ls = new byte[label.Length + seed.Length]; Array.Copy(label, 0, ls, 0, label.Length); Array.Copy(seed, 0, ls, label.Length, seed.Length); // split the secret in two halves int length; if (secret.Length % 2 == 0) { length = secret.Length / 2; } else { length = (secret.Length / 2) + 1; } byte[] s1 = new byte[length]; byte[] s2 = new byte[length]; Array.Copy(secret, 0, s1, 0, length); Array.Copy(secret, secret.Length - length, s2, 0, length); // create ExpansionDeriveBytes objects m_MD5 = new ExpansionDeriveBytes(new MD5CryptoServiceProvider(), s1, ls); m_SHA1 = new ExpansionDeriveBytes(new SHA1CryptoServiceProvider(), s2, ls); }
protected void Initialize(byte[] secret, byte[] label, byte[] seed) { if (secret == null || seed == null) throw new ArgumentNullException(); m_Disposed = false; // ls = label + seed byte[] ls = new byte[label.Length + seed.Length]; Array.Copy(label, 0, ls, 0, label.Length); Array.Copy(seed, 0, ls, label.Length, seed.Length); // split the secret in two halves int length; if (secret.Length % 2 == 0) { length = secret.Length / 2; } else { length = (secret.Length / 2) + 1; } byte[] s1 = new byte[length]; byte[] s2 = new byte[length]; Array.Copy(secret, 0, s1, 0, length); Array.Copy(secret, secret.Length - length, s2, 0, length); // create ExpansionDeriveBytes objects m_MD5 = new ExpansionDeriveBytes(new MD5CryptoServiceProvider(), s1, ls); m_SHA1 = new ExpansionDeriveBytes(new SHA1CryptoServiceProvider(), s2, ls); }