我正在查看一些生成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字节缓冲区,j
和i
显然只是循环增量,hexTable
只是十六进制数字的数组,即0
到F
。
为什么这一切都要完成?为什么16字节的盐只是填充了随机数据?为什么要经历这个复杂的过程?
这里做的是生成盐的标准方法吗?这首先产生16个随机字节的好处和重点是什么?
答案 0 :(得分:1)
这只是将8个随机字节转换为16个十六进制数字。
似乎有人误解了salt的概念,或者你的哈希需要什么输入,并认为它只接受十六进制数字。
也许salt存储在更容易存储十六进制数字而不是纯字节的地方,程序员认为能够按原样重用存储的盐(即不将其转换回字节)会很好第一)。