public M7() { _hashSha256 = HashFactory.Crypto.CreateSHA256(); _hashSha512 = HashFactory.Crypto.CreateSHA512(); _hashWhirlpool = HashFactory.Crypto.CreateWhirlpool(); _hashHavel256 = HashFactory.Crypto.CreateHaval_5_256(); _hashRipeMd160 = HashFactory.Crypto.CreateRIPEMD160(); _hashSha3 = new SpacebuxServ.Cryptology.Algorithms.SHA3Managed(512); _hashTiger = new TigerDigest(); Multiplier = (UInt32)Math.Pow(2, 16); }
/// <summary> /// Tiger computation /// </summary> /// <param name="data">the data to hash</param> /// <param name="key">optional hmac key</param> /// <returns>the hash value</returns> private static byte[] ComputeTiger(byte[] data, byte[] key) { byte[] outData = new byte[24]; if (key != null) { var tigerHmac = new HMac(new TigerDigest()); tigerHmac.Init(new KeyParameter(key)); tigerHmac.BlockUpdate(data, 0, data.Length); tigerHmac.DoFinal(outData, 0); } else { var tiger = new TigerDigest(); tiger.BlockUpdate(data, 0, data.Length); tiger.DoFinal(outData, 0); } return(outData); }
public static IDigest GetDigest(string algorithm) { string text = Platform.ToUpperInvariant(algorithm); string text2 = (string)DigestUtilities.algorithms[text]; if (text2 == null) { text2 = text; } try { switch ((DigestUtilities.DigestAlgorithm)Enums.GetEnumValue(typeof(DigestUtilities.DigestAlgorithm), text2)) { case DigestUtilities.DigestAlgorithm.GOST3411: { IDigest result = new Gost3411Digest(); return(result); } case DigestUtilities.DigestAlgorithm.MD2: { IDigest result = new MD2Digest(); return(result); } case DigestUtilities.DigestAlgorithm.MD4: { IDigest result = new MD4Digest(); return(result); } case DigestUtilities.DigestAlgorithm.MD5: { IDigest result = new MD5Digest(); return(result); } case DigestUtilities.DigestAlgorithm.RIPEMD128: { IDigest result = new RipeMD128Digest(); return(result); } case DigestUtilities.DigestAlgorithm.RIPEMD160: { IDigest result = new RipeMD160Digest(); return(result); } case DigestUtilities.DigestAlgorithm.RIPEMD256: { IDigest result = new RipeMD256Digest(); return(result); } case DigestUtilities.DigestAlgorithm.RIPEMD320: { IDigest result = new RipeMD320Digest(); return(result); } case DigestUtilities.DigestAlgorithm.SHA_1: { IDigest result = new Sha1Digest(); return(result); } case DigestUtilities.DigestAlgorithm.SHA_224: { IDigest result = new Sha224Digest(); return(result); } case DigestUtilities.DigestAlgorithm.SHA_256: { IDigest result = new Sha256Digest(); return(result); } case DigestUtilities.DigestAlgorithm.SHA_384: { IDigest result = new Sha384Digest(); return(result); } case DigestUtilities.DigestAlgorithm.SHA_512: { IDigest result = new Sha512Digest(); return(result); } case DigestUtilities.DigestAlgorithm.SHA_512_224: { IDigest result = new Sha512tDigest(224); return(result); } case DigestUtilities.DigestAlgorithm.SHA_512_256: { IDigest result = new Sha512tDigest(256); return(result); } case DigestUtilities.DigestAlgorithm.SHA3_224: { IDigest result = new Sha3Digest(224); return(result); } case DigestUtilities.DigestAlgorithm.SHA3_256: { IDigest result = new Sha3Digest(256); return(result); } case DigestUtilities.DigestAlgorithm.SHA3_384: { IDigest result = new Sha3Digest(384); return(result); } case DigestUtilities.DigestAlgorithm.SHA3_512: { IDigest result = new Sha3Digest(512); return(result); } case DigestUtilities.DigestAlgorithm.TIGER: { IDigest result = new TigerDigest(); return(result); } case DigestUtilities.DigestAlgorithm.WHIRLPOOL: { IDigest result = new WhirlpoolDigest(); return(result); } } } catch (ArgumentException) { } throw new SecurityUtilityException("Digest " + text2 + " not recognised."); }
public ITestResult Perform() { IDigest digest = new TigerDigest(); byte[] resBuf = new byte[digest.GetDigestSize()]; for (int i = 0; i < messages.Length; i++) { byte[] m = Encoding.ASCII.GetBytes(messages[i]); digest.BlockUpdate(m, 0, m.Length); digest.DoFinal(resBuf, 0); if (!Arrays.AreEqual(resBuf, Hex.Decode(digests[i]))) { return(new SimpleTestResult(false, Name + ": Vector " + i + " failed got " + Hex.ToHexString(resBuf))); } } // // test 2 // byte[] mm = Encoding.ASCII.GetBytes(messages[messages.Length - 1]); digest.BlockUpdate(mm, 0, mm.Length / 2); // clone the IDigest IDigest d = new TigerDigest((TigerDigest)digest); digest.BlockUpdate(mm, mm.Length / 2, mm.Length - mm.Length / 2); digest.DoFinal(resBuf, 0); if (!Arrays.AreEqual(resBuf, Hex.Decode(digests[digests.Length - 1]))) { return(new SimpleTestResult(false, "Tiger failing clone test" + SimpleTest.NewLine + " expected: " + digests[digests.Length - 1] + SimpleTest.NewLine + " got : " + Hex.ToHexString(resBuf))); } d.BlockUpdate(mm, mm.Length / 2, mm.Length - mm.Length / 2); d.DoFinal(resBuf, 0); if (!Arrays.AreEqual(resBuf, Hex.Decode(digests[digests.Length - 1]))) { return(new SimpleTestResult(false, "Tiger failing clone test - part 2" + SimpleTest.NewLine + " expected: " + digests[digests.Length - 1] + SimpleTest.NewLine + " got : " + Hex.ToHexString(resBuf))); } for (int i = 0; i < 65536; i++) { digest.Update((byte)(i & 0xff)); } digest.DoFinal(resBuf, 0); if (!Arrays.AreEqual(resBuf, Hex.Decode(hash64k))) { return(new SimpleTestResult(false, Name + ": Million a's failed")); } return(new SimpleTestResult(true, Name + ": Okay")); }