golang hash密码核对

2020-06-11  本文已影响0人  路人爱早茶

彩虹表:时间空间调优:k越小,查询时间越小,表本身体积越大;k越大,表本身体积越小,查询就慢
仅存hash头尾
原理:将一个明文经过hash和反hash来形成一条链,而明文对应的hash就存在表中,这样就可根据hash来查到明文

如果将哈希后的密文比作一把锁,暴力破解的方法就是现场制作各种各样不同齿形的钥匙,再来尝试能否开锁,这样耗时无疑很长;我以前错误理解的“彩虹表”,是事先制作好所有齿形的钥匙,全部拿过来尝试开锁,这样虽然省去了制作钥匙的时间,但是后来发现这些钥匙实在是太多了,没法全部带在身上。而真正的彩虹表,是将钥匙按照某种规律进行分组,每组钥匙中只需要带最有特点的一个,当发现某个“特征钥匙”差一点就能开锁了,则当场对该钥匙进行简单的打磨,直到能开锁为止。这种方法是既省力又省时的。

bcrypt加密算法原理和应用
虽然对同一个密码,每次生成的hash不一样,但是hash中包含了salt(hash产生过程:先随机生成salt,salt跟password进行hash);
在下次校验时,从hash中取出salt,salt跟password进行hash;得到的结果跟保存在DB中的hash进行比对,compareSync中已经实现了这一过程:bcrypt.compareSync(password, hashFromDB);

原文链接:https://blog.csdn.net/creator123123/java/article/details/86159627
https://blog.csdn.net/weixin_34245169/article/details/85905061

上一篇下一篇

猜你喜欢

热点阅读