我正在使用一些第三方库(用C#编写,它的文档有点差......)对于其中一个“登录”认证功能我需要提供散列密码。
我对所有这些哈希事物仍然缺乏经验,所以也许有人可以帮助我吗?
图书馆文档说:“根据用户提供的密码和Nonce值生成密码哈希值” 这个“nonce”值看起来像这样:“Xi8SCdy7FarblZe61qP9ijginknhPe15”(32位哈希?)
但我不知道应该使用什么样的哈希算法
有没有人有任何建议或示例如何在C#或C ++ / CLI中完成此操作? 感谢。
答案 0 :(得分:1)
nonce是一个只使用一次的数字,在这种情况下,用于身份验证。比如说,如果攻击者在身份验证期间获得了哈希密码,他仍然不需要原始密码,他可以只使用哈希,它会产生相同的效果,服务器端。使用nonce,哈希是使用通常不会为不同哈希复制的值来创建的。 您可以在此处找到更多信息:http://tyleregeto.com/article/a-guide-to-nonce
通常,服务器向客户端发送一个nonce,客户端将该nonce与密码组合在一起并通过散列算法运行。然后客户端将结果发送到服务器,服务器运行相同的算法,并在其存储的密码上使用相同的nonce,并比较结果。
答案 1 :(得分:1)
我认为有两个问题:如何处理nonce,以及如何哈希。 第二个是最重要的一个,因为我不认为任何人都可以回答它,除了挖掘图书馆。
第一部分有几个变体(至少我认为)并非所有变体
我不认为发送密码未发送是一个有效的选项。第三种选择也很奇怪,因为为什么不将它们作为单独的实体要求? 所以我说第一选项和第二选项是最有可能的,因为措辞很可能是第一名:
从.....
生成密码哈希
我承认如果哈希算法不为人所知,这对你没有多大帮助。