private static byte[] GetHash(string password) { SHA384 sha = new SHA384CryptoServiceProvider(); try { return(sha.ComputeHash(Encoding.UTF8.GetBytes(password))); } finally { sha.Dispose(); } }
/// <summary> /// Hash 值检查 /// </summary> /// <param name="resFile">文件路径</param> /// <param name="type">Hash 值的类型</param> public CheckHash(string resFile, HashType type) { hashValue = string.Empty; byte[] retVal = null; FileStream file = new FileStream(resFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); switch (type) { case HashType.MD5: MD5CryptoServiceProvider MD5Hash = new MD5CryptoServiceProvider(); retVal = MD5Hash.ComputeHash(file); MD5Hash.Dispose(); break; case HashType.SHA1: SHA1CryptoServiceProvider SHA1Hash = new SHA1CryptoServiceProvider(); retVal = SHA1Hash.ComputeHash(file); SHA1Hash.Dispose(); break; case HashType.SHA256: SHA256CryptoServiceProvider SHA256Hash = new SHA256CryptoServiceProvider(); retVal = SHA256Hash.ComputeHash(file); SHA256Hash.Dispose(); break; case HashType.SHA384: SHA384CryptoServiceProvider SHA384Hash = new SHA384CryptoServiceProvider(); retVal = SHA384Hash.ComputeHash(file); SHA384Hash.Dispose(); break; case HashType.SHA512: SHA512CryptoServiceProvider SHA512Hash = new SHA512CryptoServiceProvider(); retVal = SHA512Hash.ComputeHash(file); SHA512Hash.Dispose(); break; } file.Close(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < retVal.Length; i++) { sb.Append(retVal[i].ToString("x2")); } hashValue = sb.ToString(); }
public void ComputedSeedTest(string toEncrypt) { string initialSeed = "w3ry78vnb930jsxP-5q0nG7Rp2Kl3B8"; string[] seedParts = initialSeed.Split('-'); SHA384CryptoServiceProvider sha = new SHA384CryptoServiceProvider(); byte[] seedPart1 = sha.ComputeHash(Encoding.UTF8.GetBytes(seedParts[0])); byte[] seedPart2 = sha.ComputeHash(Encoding.UTF8.GetBytes(seedParts[1])); sha.Dispose(); byte[] seedBytes = new byte[seedPart1.Length + seedPart2.Length]; seedPart2.CopyTo(seedBytes, 0); seedPart1.CopyTo(seedBytes, seedPart2.Length); string seed1 = Convert.ToBase64String(seedBytes); string[] seedParts2 = initialSeed.Split('-'); byte[] seedPart3, seedPart4; using (SHA384CryptoServiceProvider sha2 = new SHA384CryptoServiceProvider()) { seedPart3 = sha2.ComputeHash(Encoding.UTF8.GetBytes(seedParts[0])); seedPart4 = sha2.ComputeHash(Encoding.UTF8.GetBytes(seedParts[1])); } byte[] seedBytes2 = new byte[seedPart3.Length + seedPart4.Length]; seedPart4.CopyTo(seedBytes2, 0); seedPart3.CopyTo(seedBytes2, seedPart4.Length); string seed2 = Convert.ToBase64String(seedBytes2); Assert.That(seed1, Is.EqualTo(seed2)); // create our TripleDesProvider objects with our new key TripleDesProvider tdes1 = new TripleDesProvider(seed1); TripleDesProvider tdes2 = new TripleDesProvider(seed1); // test encryption and decription across tdes objects string cipherText = tdes1.Encrypt(toEncrypt); string decryptedText = tdes2.Decrypt(cipherText); Assert.That(decryptedText, Is.EqualTo(toEncrypt)); }