/// <summary>
/// Hashes each component of the key hash with it's length first.
/// </summary>
/// <param name="size">The size.</param>
/// <param name="components">The components.</param>
/// <returns></returns>
public static byte[] HashKeyLengthPrefix(int size, params byte[][] components)
{
var sha1 = new Sha1Digest();
foreach (var data in components)
{
byte[] length = GetBytes(data.Length);
sha1.BlockUpdate(length, 0, length.Length);
sha1.BlockUpdate(data, 0, data.Length);
}
var hash = new byte[sha1.GetDigestSize()];
sha1.DoFinal(hash, 0);
sha1.Reset();
var outBytes = new byte[size];
Array.Copy(hash, 0, outBytes, 0, outBytes.Length);
return outBytes;
}