在我之前的问题中,我被告知要使用哈希密码而不是加密,结果证明是正确的.问题是,我以前从未处理过散列密码,并且所有文档都说SHA512,我试图在测试帐户上使用它无济于事.我不知道从哪里开始.代码注释给我示例"加密"字符串,因为他们称之为"FA35A0194E3BE7024CEFB1839CBFC922",我不知道如何使用SHA512格式化它,因为它只需要一个字节数组或流来自ComputeHash()方法:
byte[] hashedPassword = HashAlgorithm.Create("SHA512").ComputeHash( ??? );
Run Code Online (Sandbox Code Playgroud)
UPDATE
我已经尝试在字节上打印出UTF8Encoding.GetString,但它只显示了一堆废话字符,看起来与示例文档中的字符完全不同.
我将用户登录加密密码存储在数据库(SQL Server)中.由于API限制,密码需要在C#端加密,因此我无法使用数据库的内置加密.什么是加密这些密码的最快/最简单的方法,以便我可以将它们与用户以后输入第三方服务的内容进行比较?
我是C#的新手,我知道密码永远不应该是纯文本,这就是为什么我要确保我拥有最高的安全性.我已经尝试过使用这个RSA.EncryptValue()功能,但我很失落如何正确使用它.
任何帮助表示赞赏 - 提前谢谢.
-Jimmy
基于先前答案的组合,我能够解决输出哈希的适当字符的问题.我仍然遇到长度问题,因为我得到的哈希比我所遵循的文档中的预期长得多.API文档说,使用SHA512,有"FA35A0194E3BE7024CEFB1839CBFC922"作为示例参数,但是当我跑我的哈希测试仪,像"测试"一个简单的密码,以获得一个值传递到它,我得到"EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF" - 这显然是多比我需要的更长.
仅供参考,我正在使用这个:
byte[] hashedPassword = HashAlgorithm.Create("SHA512").ComputeHash(new UTF8Encoding(false).GetBytes("test"));
Console.WriteLine(BitConverter.ToString(hashedPassword).Replace("-", ""));
Run Code Online (Sandbox Code Playgroud)
希望有人在这里有比我更多的经验(不止一个).以某种方式缩小这样的值或者占用它的某个部分是正常的吗?我不确定从这里做什么.