假设一个人没有计算机(或彩虹表),但能够访问一支笔和纸,以及现代(最佳实践,而不是过时的)哈希算法和数学公式所需的所有文档。
计算密码的散列需要多长时间?
发布于 2020-09-21 07:37:24
如果您想要一种“快速”的方法来确定bcrypt-n10
所需的时间,您可以手工处理其计算中非常小的子集,然后将该时间乘以算法使用它的次数。
圆形函数被多次使用,您只需执行一次组件就可以获得基本时间。有对32位值的操作,您只需执行1。
键设置后有3072个循环操作(64x16x3)。
每个展开键有521个循环操作。
每个展开键有539个32位XOR。
每个键设置有2048个展开键
这为您提供了1070080次循环操作和1103872次32位XOR操作--一轮包含2次XOR和3次32位加法操作以及4次S框查找,您现在可以将其分解为:
3,210,240位未签名32位加法
3,244,032位异或操作
4,280,320 S-盒查找(它一直在变化)
64个河豚键调度操作(忽略,可能会增加3%的时间)
移动大量的数据
如果你是超级快,可以做一个XOR在只有10,一个附加在20,和S-盒查找在10s,即4842天计算每天8小时,仅为这些操作。
你仍然需要考虑到它将花费多少纸张,当数据从一页到另一页的时候,需要更多的书写,以及操作的额外验证,以确保你不会在某个地方犯一个小错误,把整个事情搞砸。去吧,把时间加倍。
即使我有一台有六角形输入的电子计算器和一名助手或学徒,帮助我扩大S盒子并验证我的工作,我也可能要花那么长时间;我的手指不可能一天做那么多工作或这么快地工作。
在您需要执行的3.65亿位操作中,允许的错误率为0。在过去的几十年里,你需要多少额外的努力才能确保你在计算中不犯错误?所以试一试,得到两个随机数,做一个加法和一个异或,看看这些数字是否排列成……或者如果你需要更多的时间。
https://crypto.stackexchange.com/questions/84033
复制相似问题