Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用SHA512散列密码_C#_Security_Encryption_Passwords_Hash - Fatal编程技术网

C# 如何使用SHA512散列密码

C# 如何使用SHA512散列密码,c#,security,encryption,passwords,hash,C#,Security,Encryption,Passwords,Hash,在我的上一个问题中,我被告知散列密码而不是加密,结果证明这是正确的。问题是,我以前从未处理过散列密码,所有的文档都说SHA512,我尝试在测试帐户上使用它,但都没有用。我不知道接下来该怎么办。代码注释给出了他们称之为“加密”字符串的示例,它是“FA35A0194E3BE7024CEFB1839CBFC922”,我不确定如何使用SHA512将其格式化,因为它只需要并返回ComputeHash()方法中的字节数组或流: byte[] hashedPassword = HashAlgorithm.Cr

在我的上一个问题中,我被告知散列密码而不是加密,结果证明这是正确的。问题是,我以前从未处理过散列密码,所有的文档都说SHA512,我尝试在测试帐户上使用它,但都没有用。我不知道接下来该怎么办。代码注释给出了他们称之为“加密”字符串的示例,它是“FA35A0194E3BE7024CEFB1839CBFC922”,我不确定如何使用SHA512将其格式化,因为它只需要并返回
ComputeHash()
方法中的字节数组或流:

byte[] hashedPassword = HashAlgorithm.Create("SHA512").ComputeHash( ??? );
更新


我试着在字节上打印出UTF8Encoding.GetString,但它只显示了一堆废话字符,与示例文档中的一个完全不同。

你确定它是512,因为这是128,但无论如何你可以使用

System.String Hashed = System.BitConverter.ToString(((System.Security.Cryptography.SHA512)new System.Security.Cryptography.SHA512Managed()).ComputeHash(System.Text.Encoding.ASCII.GetBytes("NotHashedPass"))).Replace("-","");

MessageBox.Show(Hashed);

但我建议至少使用一种盐。

使用普通SHA-512进行散列仍然是错误的。使用PBKDF2,其通过孔暴露

它返回原始字节,您应该使用十六进制或base64对其进行编码

您可以使用以下方法进行十六进制编码:

BitConverter.ToString(bytes).Replace("-","")
请参见此处的教程:

在本教程中:
“这些代码示例演示如何散列数据和验证散列。它支持几种散列算法。为了帮助减少字典攻击的风险,代码在生成散列之前在原始纯文本中预先添加随机字节(所谓的salt),并将其附加到生成的密文中(哈希验证需要原始salt值)。生成的密文是base64编码的。重要提示:数据哈希无法解密回纯文本”

不清楚你到底在问什么。你是想让我们帮助你学习如何使用C#中的SHA512类吗?你可以从这里的MSDN文档开始:好的,asawyer,我会编辑这个……嘿,asawyer,这够好了吗?现在你明白我为什么在这里感到困惑了吗?@Godzchear如何将这行分割成变量。没有给出一个li的分数“当你试图帮助别人理解某些东西时,你会发现他不知道他的任何代码是什么,但是,`System.Security.Cryptography.SHA512 SHA512=new System.Security.Cryptography.SHA512Managed();System.Byte[]Hash=SHA512.ComputeHash(System.Text.Encoding.ASCII.GetBytes(“NotHashedPass”);//如果要添加salt,只需执行“NotHashedPass”+“SaltHere”System.String HashStr=System.BitConverter.ToString(哈希)。替换(“-”,”);MessageBox.Show(HashStr); 59440(字节);@Igor,因为普通SHA-512速度很快。密码散列最重要的威胁是猜测许多潜在密码。如果你将散列迭代10k次,那么破解的代价将是10k倍。PBKDF2本质上就是这样一个迭代的散列函数。