/// <summary> /// ハッシュを生成する /// </summary> /// <param name="buffer">ハッシュ値を計算するbyte配列</param> public static byte[] ComputeHash(byte[] buffer) { if (buffer == null) { throw new ArgumentNullException("buffer"); } return(T_Crc32_Castagnoli.ComputeHash(buffer, 0, buffer.Length)); }
public static byte[] ComputeHash(ArraySegment <byte> value) { if (value.Array == null) { throw new ArgumentNullException("value"); } return(T_Crc32_Castagnoli.ComputeHash(value.Array, value.Offset, value.Count)); }
public void Crc32_Castagnoli() { Random random = new Random(); Stopwatch sw1 = new Stopwatch(); Stopwatch sw2 = new Stopwatch(); var flags = new int[] { 0, 1 }; var length = 1024; byte[] value = new byte[length]; for (int i = 0; i < 1024 * 1024; i++) { byte[] result1 = null; byte[] result2 = null; random.Shuffle(flags); foreach (var index in flags) { if (index == 0) { sw1.Start(); result1 = Library.Security.Crc32_Castagnoli.ComputeHash(value, 0, length); sw1.Stop(); } else if (index == 1) { sw2.Start(); result2 = T_Crc32_Castagnoli.ComputeHash(value, 0, length); sw2.Stop(); } } Assert.IsTrue(Unsafe.Equals(result1, result2)); } StringBuilder sb = new StringBuilder(); sb.AppendLine("Native Crc32_Castagnoli: " + sw1.Elapsed.ToString()); sb.AppendLine("Managed Crc32_Castagnoli: " + sw2.Elapsed.ToString()); Console.WriteLine(sb.ToString()); }
public void Test_Crc32_Castagnoli() { byte[] buffer = new byte[1024 * 32]; _random.NextBytes(buffer); Assert.IsTrue(CollectionUtilities.Equals(T_Crc32_Castagnoli.ComputeHash(buffer), Crc32_Castagnoli.ComputeHash(buffer))); using (MemoryStream stream1 = new MemoryStream(buffer)) using (MemoryStream stream2 = new MemoryStream(buffer)) { Assert.IsTrue(CollectionUtilities.Equals(T_Crc32_Castagnoli.ComputeHash(stream1), Crc32_Castagnoli.ComputeHash(stream2))); } var list = new List <ArraySegment <byte> >(); list.Add(new ArraySegment <byte>(buffer)); list.Add(new ArraySegment <byte>(buffer)); list.Add(new ArraySegment <byte>(buffer)); list.Add(new ArraySegment <byte>(buffer)); Assert.IsTrue(CollectionUtilities.Equals(T_Crc32_Castagnoli.ComputeHash(list), Crc32_Castagnoli.ComputeHash(list))); }