1

我正在使用一些第三方库(用 C# 编写,它的文档有点差......)事情是,对于其中一个“登录”身份验证功能,我需要为它提供一个散列密码

我对所有这些散列的事情仍然有点缺乏经验,所以也许这里有人可以帮助我?

库文档说:“从用户提供的密码和 Nonce 值生成密码哈希”这个“nonce”值看起来像这样:“Xi8SCdy7FarblZe61qP9ijginknhPe15”(32 位哈希?)

但我不知道应该使用什么样的哈希算法

有没有人有任何建议或示例如何在 C# 或 C++/CLI 中完成?谢谢。

4

2 回答 2

1

随机数是只使用一次的数字,在这种情况下,用于身份验证。比方说,如果攻击者在身份验证过程中获得了哈希密码,他仍然不需要原始密码,他可以只使用哈希,并且在服务器端具有相同的效果。使用随机数,散列是使用通常不会为不同的散列复制的值生成的。您可以在这里找到更多信息:http: //tyleregeto.com/article/a-guide-to-nonce

通常,服务器向客户端发送一个随机数,客户端将该随机数与密码结合起来,并通过散列算法运行它。然后客户端将结果发送到服务器,服务器使用相同的随机数对它存储的密码运行相同的算法并比较结果。

于 2013-11-11T16:32:53.763 回答
1

我认为有两个问题:如何处理随机数,以及如何散列。第二个是最重要的,因为我想除了挖到图书馆外,没有人能回答。

第一部分有几个变体(至少我认为)并非都同样可能

  1. 连接密码和哈希,并对结果进行哈希处理
  2. 散列密码,散列随机数,连接那些
  3. 哈希密码,与随机数连接

我不认为发送未散列的密码是一个有效的选择。第三个选项也感觉很奇怪,因为为什么不要求它们作为单独的实体呢?所以我会说选项一和选项二是最有可能的,因为措辞,数字 1 最有可能:

从......生成密码哈希

我承认,如果不知道哈希算法,这对您没有多大帮助。

于 2017-03-06T12:53:01.180 回答