hashlib.scrypt
的文档有点简短:
hashlib.scrypt(password, *, salt, n, r, p, maxmem=0, dklen=64)
该函数定义了RFC 7914中提供的基于scrypt的密码导出函数。
password和salt必须是类似字节的对象。应用程序和库应将password限制为合理的长度(例如1024)。salt应该是来自适当来源的大约16个或更多字节,例如os.urandom()。
n是CPU/内存成本因素,r是块大小,p是并行化因数,而maxmem则限制内存(OpenSSL 1.1.0默认为32 MiB)。dklen是派生键的长度。
我发现n
必须是2的幂且至少为2。
除此之外,我感到有点被忽略了。今天,hashlib.scrypt(b"foo", salt=b"bar", n=2, r=1, p=1)
是否被认为是安全的?我如何判断选择哪些参数?