/// <summary> /// Calculates the hash for fixed length data with a prefixed salt value. /// </summary> /// <exception cref="T:System.ArgumentNullException">data or salt is null.</exception> /// <remarks>A "salt" value is random data prefixed to every hashed value to prevent common dictionary attacks.</remarks> public Data Calculate(Data data, Data salt) { if (data == null) throw new ArgumentNullException("data"); if (salt == null) throw new ArgumentNullException("salt"); var value = new byte[data.Bytes.Length + salt.Bytes.Length]; salt.Bytes.CopyTo(value, 0); data.Bytes.CopyTo(value, salt.Bytes.Length); return CalculatePrivate(value); }
private Data DoSaltedHash(HashProvider p, Data salt) { using (var h = new Hash(p)) { return h.Calculate(new Data(_targetString), salt); } }
/// <summary> /// Calculates the hash for fixed length data. /// </summary> /// <exception cref="T:System.ArgumentNullException">data is null.</exception> public Data Calculate(Data data) { if (data == null) throw new ArgumentNullException("data"); return CalculatePrivate(data.Bytes); }