以 20 或更多的成本提高散列速度
Posted
技术标签:
【中文标题】以 20 或更多的成本提高散列速度【英文标题】:Boost Up hashing speed with cost 20 or more 【发布时间】:2018-06-15 14:21:14 【问题描述】:我正在使用
password_hash(myPassword,PASSWORD_DEFAULT,['cost'=>20])
在 php 中。 但它无法执行散列密码
致命错误:超过 30 秒的最大执行时间
我使用具有以下硬件的计算机: 16GB 内存 8GB 显卡 CPU 核心 i7-8700K 3.70GHz
如何在更短的时间内执行大笔成本??? 我需要用什么来启动我的电脑才能在更短的时间内获得良好的效果???
【问题讨论】:
当您尝试不使用第二个和第三个参数时会发生什么?password_hash(myPassword)
?
password_hash
docs 提供了一个示例脚本,用于为您的服务器计算合理的成本值(示例 #4)。你不应该随便挑一个。
这在我的 i5-6500 上需要 1.2 分钟。 password_hash()
是单线程操作,所以如果你超频你的 CPU 或者购买一个更高 IPC 的 CPU 那么你应该能够获得更好的时间。
将成本因子提高 1 意味着哈希密码的时间加倍。现在一个合理的因数是 10,所以你的因数需要大约 1000 倍。
【参考方案1】:
高成本的关键在于它需要更多的计算能力。要更快地散列大量成本,请在更快的机器上执行它。要使散列在您拥有的机器上可用,请选择一个能够产生合理(阅读:尽可能慢,尽可能快)散列时间的成本。
我们的目标是使其可用于一次性哈希来存储/检查密码,但对于试图通过多次尝试暴力破解哈希完全不可行。
20
迄今为止在实践中是可笑且无法使用的。
【讨论】:
从未意识到成本是指数级的。 12 和 20 之间的差异很大。以上是关于以 20 或更多的成本提高散列速度的主要内容,如果未能解决你的问题,请参考以下文章
阿里安全开源隐私计算新技术:计算速度快20倍,通信成本低2倍,已登安全顶会...