什么是scrypt输出的最大长度?

Gil*_*ili 10 scrypt

我想在数据库中存储一个scrypt -hashed密码.我可以期待的最大长度是多少?

Gil*_*ili 10

根据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编码的salt.
  • key 是base64编码的派生密钥.

根据/sf/answers/936518971/,base64编码的字符串的长度是4*小区(N/3)where n表示正在编码的字节数.

让我们打破这个:

  • 美元符号组成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个字符.