private static byte[] ComputeLeafHash(byte[] rawData) { var data = new byte[rawData.Length + 1]; data[0] = LeafHashMark; rawData.CopyTo(data, 1); var tiger = new TigerHash(); return tiger.ComputeHash(data); }
private static byte[] ComputeInternalHash(byte[] leafA, byte[] leafB) { var data = new byte[leafA.Length + leafB.Length + 1]; data[0] = InternalHashMark; leafA.CopyTo(data, 1); leafB.CopyTo(data, leafA.Length + 1); var tiger = new TigerHash(); return tiger.ComputeHash(data); }
public void TigerShouldBeCorrectForAllTestData() { foreach (var pair in TestData) { // arrange var tiger = new TigerHash(); // act var hash = tiger.ComputeHash(Encoding.ASCII.GetBytes(pair.Key)); // assert Assert.Equal(pair.Value, HashToString(hash), true); } }
public void TigerShouldBeCorrectForTestDataSet1() { TestDataSet1.Add(new string('a', 1000000), "6DB0E2729CBEAD93D715C6A7D36302E9B3CEE0D2BC314B41"); foreach (var pair in TestDataSet1) { // arrange var tiger = new TigerHash(); // act var hash = tiger.ComputeHash(Encoding.ASCII.GetBytes(pair.Key)); // assert Assert.Equal(pair.Value, HashToString(hash), true); } }
public static byte[] ComputeTth(Stream data) { if (data.Length == 0) { var tiger = new TigerHash(); return tiger.ComputeHash(new byte[] { 0 }); } if (data.Length <= BlockSize) { return ComputeOneBlockTth(data); } var leafHashes = LoadLeafHash(data); return GetRootHash(leafHashes); }
public void TigerShouldBeCorrectForTestDataSet2() { var correctHashes = File.ReadAllLines("TestSet2Data.txt"); foreach (var byteNum in Enumerable.Range(0, 128)) { // arrange var data = new byte[byteNum]; var tiger = new TigerHash(); // act var hash = tiger.ComputeHash(data); // assert Assert.Equal(correctHashes[byteNum * 8], HashToString(hash), true); } }
public void TigerShouldBeCorrectForTestDataSet4() { var data = new byte[24]; // arrange var tiger = new TigerHash(); // act var hash = tiger.ComputeHash(data); // assert Assert.Equal("CDDDCACFEA7B70B485655BA3DC3F60DEE4F6B8F861069E33", HashToString(hash), true); data = Enumerable .Range(0, 100000) .Select(iteration => new TigerHash()) .Aggregate(data, (current, newTiger) => newTiger.ComputeHash(current)); // assert Assert.Equal("35C4F594F7E827FFC68BFECEBEDA314EDC6FE917BDF00B66", HashToString(data), true); }
public void TigerShouldBeCorrectForTestDataSet3() { var oneBitBytes = new byte[] { 0x80, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x1 }; var correctHashes = File.ReadAllLines("TestSet3Data.txt"); foreach (var byteIndex in Enumerable.Range(0, 64)) { foreach (var byteValue in oneBitBytes) { // arrange var data = new byte[64]; data[byteIndex] = byteValue; var tiger = new TigerHash(); // act var hash = tiger.ComputeHash(data); // assert Assert.Equal(correctHashes[(byteIndex * 8) + Array.IndexOf(oneBitBytes, byteValue)], HashToString(hash), true); } } }