我想在数据库中存储scrypt - 哈希密码。我可以期待的最大长度是多少?
答案 0 :(得分:9)
根据https://github.com/wg/scrypt,输出格式为$s0$params$salt$key
,其中:
s0
表示格式的版本0,具有128位salt和256位派生密钥。params
是一个32位十六进制整数,包含log2(N)(16位),r(8位)和p(8位)。salt
是base64编码的盐。key
是base64编码的派生密钥。根据https://stackoverflow.com/a/13378842/14731,base64编码字符串的长度为,其中n
表示正在编码的字节数。
让我们打破这个:
( log2(16) = 4 )
,因此params
字段组成(32位/ 4位)= 8个字符。(4 * ceil(16 / 3))
= 24个字符。(4 * ceil(32 / 3))
= 44个字符。综上所述,我们得到:4 + 2 + 8 + 24 + 44
= 82个字符。
答案 1 :(得分:2)
在Colin Percival自己的implementation中,tarsnap scrypt标头是96个字节。这包括:
这也是node-scrypt使用的格式。有关stackexchange的校验和和HMAC哈希背后的基本原理的解释。
作为base64编码的字符串,这会产生128个字符。