在我之前的问题中,有人告诉我散列密码而不是加密,事实证明这是正确的。问题是,我以前从未处理过散列密码,所有文档都说 SHA512,我曾尝试在测试帐户上使用它但无济于事。我不确定从这里去哪里。代码注释为我提供了他们称之为“加密”字符串的示例,它是“FA35A0194E3BE7024CEFB1839CBFC922”,我不确定如何使用 SHA512 对其进行格式化,因为它所获取和返回的只是一个字节数组或来自ComputeHash()
方法:
byte[] hashedPassword = HashAlgorithm.Create("SHA512").ComputeHash( ??? );
更新
我已经尝试在字节上打印出 UTF8Encoding.GetString,但它只显示一堆废话字符,看起来与示例文档中的字符完全不同。
最佳答案
用简单的 SHA-512 散列仍然是错误的。使用通过 Rfc2898DeriveBytes 公开的 PBKDF2 .
它返回原始字节,您应该使用十六进制或 base64 对其进行编码。
您可以使用以下方式进行十六进制编码:
BitConverter.ToString(bytes).Replace("-","")
关于c# - 如何使用 SHA512 散列密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10324141/