Beispiel #1
0
        private static byte[] GetHash(string password)
        {
            SHA384 sha = new SHA384CryptoServiceProvider();

            try
            {
                return(sha.ComputeHash(Encoding.UTF8.GetBytes(password)));
            }
            finally
            {
                sha.Dispose();
            }
        }
Beispiel #2
0
        /// <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();
        }
Beispiel #3
0
        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));
        }