コード例 #1
0
        private void MainUI_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            if (counter == 4)
            {
                counter = 0;
            }

            keys[counter] = e;
            counter++;

            var KeyString = "";

            byte[] DataHash = new byte[1];
            foreach (var item in keys)
            {
                if (item != null)
                {
                    KeyString += ("" + item.KeyData).Remove(0, 1);
                }
            }
            try
            {
                DataHash = SHA512Cng.Create().ComputeHash(BitConverter.GetBytes(Convert.ToInt32(KeyString)));
            }
            catch (Exception)
            {            }

            if (DataHash.SequenceEqual(DataBuffer))
            {
                new Thread(FadeCalcOut).Start();
                Array.Clear(keys, 0, keys.Length);
                populate();
            }
        }
コード例 #2
0
 /// <summary>
 /// CheckSum512 method implementation
 /// </summary>
 public static byte[] CheckSum512(byte[] value)
 {
     byte[] hash = null;
     using (SHA512 sha512 = SHA512Cng.Create())
     {
         hash = sha512.ComputeHash(value);
     }
     return(hash);
 }
コード例 #3
0
        public string Encrypt(string password)
        {
            SHA512 test = SHA512Cng.Create();

            byte[] passHash  = Encoding.UTF8.GetBytes(password);
            byte[] Encrypted = test.ComputeHash(passHash);
            password = GetStringFromHash(Encrypted);
            return(password);
        }
コード例 #4
0
        static public string hash(string chaine)
        {
            byte[] textAsByte = Encoding.Default.GetBytes(chaine);

            SHA512 sha512 = SHA512Cng.Create();

            byte[] hash = sha512.ComputeHash(textAsByte);

            return(Convert.ToBase64String(hash));
        }
コード例 #5
0
ファイル: EncodingPass.cs プロジェクト: MaxenceDufour/ForDev
        /// <summary>
        /// Method of hashing and salting
        /// </summary>
        /// <param name="element">the string element to encrypt</param>
        /// <returns>the encrypt element</returns>
        public static byte[] SalAndHash(string element)
        {
            Encoding u8 = Encoding.UTF8;

            byte[] textAsByte = u8.GetBytes($"u0n2p5e7u4D9e@s)a!laGùe$pa,erCi{element}u0n2p5e57dncpo3édzpa,erCi");
            SHA512 sha512     = SHA512Cng.Create();

            byte[] hash = sha512.ComputeHash(textAsByte);
            return(hash);
        }
コード例 #6
0
        public string getGeneratedCode(string email)
        {
            string code       = string.Empty;
            SHA512 codedEmail = SHA512Cng.Create();

            email += email + getDateOnString();
            byte[] passHash  = Encoding.UTF8.GetBytes(email);
            byte[] Encrypted = codedEmail.ComputeHash(passHash);
            code = getStringFromHash(Encrypted);
            return(code);
        }
コード例 #7
0
ファイル: HashHelper.cs プロジェクト: lonelyong/NgNet
        /// <summary>
        /// 计算文件的 sha512 值
        /// </summary>
        /// <param name="path">要计算 MD5 值的文件名和路径</param>
        /// <returns>MD5 值16进制字符串</returns>
        public static string GetFileSHA512(string path)
        {
            if (System.IO.File.Exists(path) == false)
            {
                return(string.Empty);
            }

            FileStream fs     = new FileStream(path, FileMode.Open, FileAccess.Read);
            SHA512     sha512 = SHA512Cng.Create();

            byte[] hashByts = sha512.ComputeHash(fs);
            return(ConvertHashBytes(hashByts));
        }
コード例 #8
0
 public byte[] GetHash(byte[] sourceBuffer)
 {
     try
     {
         var sha512Cng = SHA512Cng.Create();
         return(sha512Cng.ComputeHash(sourceBuffer));
     }
     catch (Exception e)
     {
         Debug.WriteLine($"SHA512Cng service GetSHA512CngHash error: {e.Message}");
         return(default(byte[]));
     }
 }
コード例 #9
0
        public byte[] ComputeHash(byte[] input)
        {
            switch (SelectedAlgorithm)
            {
            case Algorithm.SHA1:
                return(SHA1Cng.Create().ComputeHash(input));

            case Algorithm.SHA256:
                return(SHA256Cng.Create().ComputeHash(input));

            case Algorithm.SHA384:
                return(SHA384Cng.Create().ComputeHash(input));

            case Algorithm.SHA512:
                return(SHA512Cng.Create().ComputeHash(input));

            default:
                throw new ArgumentException("Valid options are: SHA1, SHA256, SHA384 or SHA512");
            }
        }
コード例 #10
0
ファイル: GetPassword.cs プロジェクト: SpartanTek/HansonFinal
        private void Button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != textBox2.Text)
            {
                MessageBox.Show("Passwords do not match.", "Change combo error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if (string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text))
            {
                MessageBox.Show("One or more of the password fields cannot be empty.", "Change combo error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            var DataFile   = File.Create(".CLSTORE");
            var ComboArray = new Keys[textBox2.Text.Length];

            for (var i = 0; i < ComboArray.Length; i++)
            {
                ComboArray[i] = (Keys)VkKeyScan(textBox2.Text[i]);
            }
            DataFile.Write(SHA512Cng.Create().ComputeHash(BitConverter.GetBytes(Convert.ToInt32(textBox2.Text))), 0, 64);
            DataFile.Close();
            MessageBox.Show("Your combo has been successfully changed.", "Locker combo success", MessageBoxButtons.OK, MessageBoxIcon.Information);
            Close();
        }
コード例 #11
0
ファイル: frmHashTool.cs プロジェクト: drizzt/ctr_toolkit
        // ReSharper disable AccessToStaticMemberViaDerivedType
        private void setHashAlgorithm()
        {
            switch (cbAlgo.SelectedIndex)
            {
            case 0:
                switch (cbOption.SelectedIndex)
                {
                case 0: _ha = SHA256.Create();
                    break;

                case 1: _ha = SHA256Cng.Create();
                    break;

                case 2: _ha = HMACSHA256.Create();
                    break;
                }
                break;

            case 1:
                switch (cbOption.SelectedIndex)
                {
                case 0: _ha = SHA512.Create();
                    break;

                case 1: _ha = SHA512Cng.Create();
                    break;

                case 2: _ha = HMACSHA512.Create();
                    break;
                }
                break;

            case 2:
                switch (cbOption.SelectedIndex)
                {
                case 0: _ha = SHA1.Create();
                    break;

                case 1: _ha = SHA1Cng.Create();
                    break;

                case 2: _ha = HMACSHA1.Create();
                    break;
                }
                break;

            case 3:
                switch (cbOption.SelectedIndex)
                {
                case 0: _ha = MD5.Create();
                    break;

                case 1: _ha = MD5Cng.Create();
                    break;

                case 2: _ha = HMACMD5.Create();
                    break;
                }
                break;

            case 4:
                //stays null for Modbus-CRC16
                break;

            case 5:
                _ha = new Crc32();
                break;
            }
        }
コード例 #12
0
        private byte[] EncryptBinaryDataInternal(ref byte[] data, ref byte[] encryptedKey, bool useExternalKey)
        {
            var ms            = new MemoryStream(data);
            var msEncodedData = new MemoryStream();

            using (Aes aesAlg = AesCng.Create("AES"))
            {
                if (useExternalKey)
                {
                    ProtectedMemory.Unprotect(encryptedKey, MemoryProtectionScope.SameProcess);
                }

                if (aesAlg == null)
                {
                    return(msEncodedData.ToArray());
                }

                var hashAlg = SHA512Cng.Create("SHA512");
                hashAlg.Initialize();

                aesAlg.BlockSize = 128;
                aesAlg.KeySize   = 256;
                aesAlg.Padding   = PaddingMode.PKCS7;
                aesAlg.Mode      = CipherMode.CBC;
                aesAlg.GenerateIV();
                Rfc2898DeriveBytes rfc2898DeriveBytes = new Rfc2898DeriveBytes(encryptedKey, SaltBytes, 1000, HashAlgorithmName.SHA256);
                byte[]             key = rfc2898DeriveBytes.CryptDeriveKey("AES", "SHA256", 256, aesAlg.IV);

                // Create AES Crypto Transform to be used in the CryptoStream transform function
                ICryptoTransform cryptoTransform = aesAlg.CreateEncryptor(key, aesAlg.IV);

                // Protect encryption Key Again
                if (useExternalKey)
                {
                    ProtectedMemory.Protect(encryptedKey, MemoryProtectionScope.SameProcess);
                }

                // Create the streams used for encryption.
                int bufferSize = (int)Math.Min(MaxBufferSize, ms.Length);
                var buffer     = new byte[bufferSize];
                ms.Position = 0;

                //Write Init Vector - Always 16 bytes
                msEncodedData.Write(aesAlg.IV, 0, 16);

                // Write Validation Hash - Always 64 bytes
                byte[] hashBuffer = hashAlg.ComputeHash(data);
                msEncodedData.Write(hashBuffer, 0, hashBuffer.Length);

                // Write 32 byte of entropy
                hashBuffer = rfc2898DeriveBytes.GetBytes(32);
                msEncodedData.Write(hashBuffer, 0, hashBuffer.Length);

                using (var csEncrypt = new CryptoStream(msEncodedData, cryptoTransform, CryptoStreamMode.Write))
                {
                    int bytesRead;
                    while ((bytesRead = ms.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        csEncrypt.Write(buffer, 0, bytesRead);
                    }

                    csEncrypt.FlushFinalBlock();
                    msEncodedData.Flush();
                }

                rfc2898DeriveBytes.Dispose();
            }

            return(msEncodedData.ToArray());
        }
コード例 #13
0
        private byte[] DecryptBinaryDataInternal(ref byte[] data, ref byte[] encryptedKey, bool useExternalKey, out bool dataIsValid)
        {
            var msDecrypted = new MemoryStream();
            var msEncrypted = new MemoryStream(data, MetadataLength - 1, data.Length - MetadataLength);
            var msMetadata  = new MemoryStream(data, 0, MetadataLength);

            using (Aes aesAlg = AesCng.Create("AES"))
            {
                if (useExternalKey)
                {
                    ProtectedMemory.Unprotect(encryptedKey, MemoryProtectionScope.SameProcess);
                }

                if (aesAlg == null)
                {
                    dataIsValid = false;
                    return(null);
                }

                SHA512 hashAlg = SHA512Cng.Create("SHA512");
                hashAlg.Initialize();


                byte[] initVector = new byte[16];
                msMetadata.Read(initVector, 0, initVector.Length);

                byte[] hashBuffer = new byte[64];
                msMetadata.Read(hashBuffer, 0, hashBuffer.Length);

                byte[] entropyBytes = new byte[32];
                msMetadata.Read(entropyBytes, 0, entropyBytes.Length);


                int encryptedDataLength = data.Length;

                aesAlg.BlockSize = 128;
                aesAlg.KeySize   = 256;
                aesAlg.Padding   = PaddingMode.PKCS7;
                aesAlg.Mode      = CipherMode.CBC;
                aesAlg.IV        = initVector;
                var    rfc2898DeriveBytes = new Rfc2898DeriveBytes(encryptedKey, SaltBytes, 1000, HashAlgorithmName.SHA256);
                byte[] key = rfc2898DeriveBytes.CryptDeriveKey("AES", "SHA256", 256, aesAlg.IV);

                // Create AES Crypto Transform to be used in the CryptoStream transform function
                ICryptoTransform cryptoTransform = aesAlg.CreateDecryptor(key, initVector);

                // Create the streams used for encryption.
                int bufferSize     = Math.Min(MaxBufferSize, encryptedDataLength);
                var plainTextBytes = new byte[bufferSize];


                // Protect encryption Key Again
                if (useExternalKey)
                {
                    ProtectedMemory.Protect(encryptedKey, MemoryProtectionScope.SameProcess);
                }

                // Create the streams used for decryption.
                using (var csDecrypt = new CryptoStream(msEncrypted, cryptoTransform, CryptoStreamMode.Read))
                {
                    int decryptedByteCount;
                    while ((decryptedByteCount = csDecrypt.Read(plainTextBytes, 0, plainTextBytes.Length)) > 0)
                    {
                        msDecrypted.Write(plainTextBytes, 0, decryptedByteCount);
                    }
                }

                byte[] validationHash = hashAlg.ComputeHash(msDecrypted);
                dataIsValid = validationHash.AsEnumerable().SequenceEqual(hashBuffer);
                rfc2898DeriveBytes.Dispose();
                msEncrypted.Dispose();
                msMetadata.Dispose();
            }

            return(msDecrypted.ToArray());
        }
コード例 #14
0
        /// <summary>ハッシュ(キー無し)サービスプロバイダの生成</summary>
        /// <param name="eha">ハッシュ(キー無し)サービスプロバイダの列挙型</param>
        /// <returns>ハッシュ(キー無し)サービスプロバイダ</returns>
        /// <remarks>
        /// EnumHashAlgorithmから、HashAlgorithmを生成するために追加。
        /// HashAlgorithm.Create(HashNameConst.SHA256) は .NET Core 2 で動作せず。
        /// - KeyedHashAlgorithm.Create("HMACSHA1") throw PNSE (on .NET Core 2
        ///   https://github.com/dotnet/standard/issues/530#issuecomment-375043416
        /// </remarks>
        public static HashAlgorithm CreateHashAlgorithmSP(EnumHashAlgorithm eha)
        {
            // ハッシュ(キー無し)サービスプロバイダ
            HashAlgorithm ha = null;

            if (eha == EnumHashAlgorithm.Default)
            {
                // 既定の暗号化サービスプロバイダ
                ha = HashAlgorithmCmnFunc.GetHashAlgorithmFromNameString(); // devps(1703)
            }

            #region MD5
            else if (eha == EnumHashAlgorithm.MD5_CSP)
            {
                // MD5CryptoServiceProviderサービスプロバイダ
                ha = MD5CryptoServiceProvider.Create(); // devps(1703)
            }
#if NETSTD
#else
            else if (eha == EnumHashAlgorithm.MD5_CNG)
            {
                // MD5Cngサービスプロバイダ
                ha = MD5Cng.Create(); // devps(1703)
            }
#endif
            #endregion

            #region RIPEMD160
            else if (eha == EnumHashAlgorithm.RIPEMD160_M)
            {
#if NETSTD
                ha = null; // BouncyCastleを使用する。
#else
                // RIPEMD160Managedサービスプロバイダ
                ha = RIPEMD160Managed.Create(); // devps(1703)
#endif
            }
            #endregion

            #region SHA1
            else if (eha == EnumHashAlgorithm.SHA1_CSP)
            {
                // SHA1CryptoServiceProviderサービスプロバイダ
                ha = SHA1CryptoServiceProvider.Create(); // devps(1703)
            }
#if NETSTD
#else
            else if (eha == EnumHashAlgorithm.SHA1_CNG)
            {
                // SHA1Cngサービスプロバイダ
                ha = SHA1Cng.Create(); // devps(1703)
            }
#endif
            else if (eha == EnumHashAlgorithm.SHA1_M)
            {
                // SHA1Managedサービスプロバイダ
                ha = SHA1Managed.Create(); // devps(1703)
            }
            #endregion

            #region SHA256
            else if (eha == EnumHashAlgorithm.SHA256_CSP)
            {
                // SHA256CryptoServiceProviderサービスプロバイダ
                ha = SHA256CryptoServiceProvider.Create(); // devps(1703)
            }
#if NETSTD
#else
            else if (eha == EnumHashAlgorithm.SHA256_CNG)
            {
                // SHA256Cngサービスプロバイダ
                ha = SHA256Cng.Create(); // devps(1703)
            }
#endif
            else if (eha == EnumHashAlgorithm.SHA256_M)
            {
                // SHA256Managedサービスプロバイダ
                ha = SHA256Managed.Create(); // devps(1703)
            }
            #endregion

            #region SHA384
            else if (eha == EnumHashAlgorithm.SHA384_CSP)
            {
                // SHA384CryptoServiceProviderサービスプロバイダ
                ha = SHA384CryptoServiceProvider.Create(); // devps(1703)
            }
#if NETSTD
#else
            else if (eha == EnumHashAlgorithm.SHA384_CNG)
            {
                // SHA384Cngサービスプロバイダ
                ha = SHA384Cng.Create(); // devps(1703)
            }
#endif
            else if (eha == EnumHashAlgorithm.SHA384_M)
            {
                // SHA384Managedサービスプロバイダ
                ha = SHA384Managed.Create(); // devps(1703)
            }
            #endregion

            #region SHA512
            else if (eha == EnumHashAlgorithm.SHA512_CSP)
            {
                // SHA512CryptoServiceProviderサービスプロバイダ
                ha = SHA512CryptoServiceProvider.Create(); // devps(1703)
            }
#if NETSTD
#else
            else if (eha == EnumHashAlgorithm.SHA512_CNG)
            {
                // SHA512Cngサービスプロバイダ
                ha = SHA512Cng.Create(); // devps(1703)
            }
#endif
            else if (eha == EnumHashAlgorithm.SHA512_M)
            {
                // SHA512Managedサービスプロバイダ
                ha = SHA512Managed.Create(); // devps(1703)
            }
            #endregion

            else
            {
                // 既定の暗号化サービスプロバイダ
                ha = HashAlgorithmCmnFunc.GetHashAlgorithmFromNameString(); // devps(1703)
            }

            return(ha);
        }