为什么这段代码首先将随机盐编码为十六进制数字?

时间:2011-08-22 22:33:28

标签: authentication cryptography salt

我正在查看一些生成salt的现有代码,该代码用作身份验证哈希的输入。

盐长度为16个字节,首先使用OS随机数生成器生成8个字节的随机数据。

然后,8字节缓冲区中的每个字节用于将数据放入16字节缓冲区的2个字节中,如下所示:

out[j]   = hexTable[data[i] & 0xF];
out[j-1] = hexTable[data[i] >> 4 & 0xF];

out是16字节的盐,data是最初的8字节缓冲区,ji显然只是循环增量,hexTable只是十六进制数字的数组,即0F

为什么这一切都要完成?为什么16字节的盐只是填充了随机数据?为什么要经历这个复杂的过程?

这里做的是生成盐的标准方法吗?这首先产生16个随机字节的好处和重点是什么?

1 个答案:

答案 0 :(得分:1)

这只是将8个随机字节转换为16个十六进制数字。

似乎有人误解了salt的概念,或者你的哈希需要什么输入,并认为它只接受十六进制数字。

也许salt存储在更容易存储十六进制数字而不是纯字节的地方,程序员认为能够按原样重用存储的盐(即不将其转换回字节)会很好第一)。