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(); } }
/// <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); }
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); }
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)); }
/// <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); }
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); }
/// <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)); }
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[])); } }
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"); } }
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(); }
// 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; } }
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()); }
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()); }
/// <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); }