由于bcrypt的机制是:
>>> myhash = bcrypt.hashpw('testpassword', bcrypt.gensalt(12))
>>> myhash
'$2a$12$K1hnCm5z74QtXaynv4.S8.i1FK9xjRr7JSPCRCyB9zpv8xZznZGFi'
>>> bcrypt.hashpw('testpassword', myhash)
'$2a$12$K1hnCm5z74QtXaynv4.S8.i1FK9xjRr7JSPCRCyB9zpv8xZznZGFi'
我想将它用于身份验证。问题是我想从客户端制作它,所以我需要客户端中的盐部分。
我想,如果我使用我自己的gensalt(username)
——它从用户名生成一个盐——对客户端来说总是使用与其他用户不同的相同盐可能是件好事。
这是 bcrypt 和我的项目的一个很好的近似值,还是我打破了 bcrypt 机制的安全性?
我在想,如果有人想解密密码,就不可能使用彩虹表,因为他必须为每个用户使用一个。我在安全问题方面没有足够的经验,不知道这是否会好。也许它hashpw
的速度足以在 PC 上进行蛮力。