Argon2在设计上是很耗内存的。在半官方的 Go 实现中,使用时建议使用以下参数IDKey
:
key := argon2.IDKey([]byte("some password"), salt, 1, 64*1024, 4, 32)
其中1
是时间参数,64*1024
是内存参数。这意味着库在散列值时将创建一个 64MB 的缓冲区。在许多散列过程可能同时运行的情况下,这会对主机内存造成很大压力。
在内存消耗过多的情况下,建议减少内存参数并增加时间因子:
RFC 草案建议[2] time=1,memory=64*1024 是一个合理的数字。如果在某些情况下无法使用该内存量 (64 MB),则可以增加时间参数以进行补偿。
所以,假设我想将内存消耗限制为 16MB(推荐的 64MB 的 1/4),我仍然不清楚我应该如何调整time
参数:这应该是4 倍,以便内存和时间保持不变?或者在时间和记忆的相关性背后还有其他一些逻辑在起作用吗?
慕少森
宝慕林4294392
相关分类