我想存储一个scrypt http://en.wikipedia.org/wiki/Scrypt- 数据库中的散列密码。我可以预期的最大长度是多少?
根据https://github.com/wg/scrypt https://github.com/wg/scrypt输出格式是$s0$params$salt$key
where:
-
s0
表示格式的版本 0,具有 128 位盐和 256 位派生密钥。
-
params
是一个 32 位十六进制整数,包含 log2(N)(16 位)、r(8 位)和 p(8 位)。
-
salt
是 base64 编码的盐。
-
key
是 base64 编码的派生密钥。
According to https://stackoverflow.com/a/13378842/14731 https://stackoverflow.com/a/13378842/14731 the length of a base64-encoded string is where n
denotes the number of bytes being encoded.
让我们来分解一下:
- 美元符号由 4 个字符组成。
- 版本号由 2 个字符组成。
- 每个十六进制字符代表 4 位
( log2(16) = 4 )
, 所以params
字段由(32 位/4 位)= 8 个字符组成。
- 128 位盐相当于 16 个字节。 Base64 编码格式组成
(4 * ceil(16 / 3))
= 24 个字符。
- 256 位派生密钥相当于 32 个字节。 Base64 编码格式组成
(4 * ceil(32 / 3))
= 44 个字符。
将所有这些放在一起,我们得到:4 + 2 + 8 + 24 + 44
= 82 个字符.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)