2017-05-31 132 views
0

我有一个使用bcrypt加密用户名密码的网页,这些密码然后存储在数据库中。我有一个在QT上运行的C++程序,需要对用户进行身份验证,为此,我必须加密用户输入的密码并将其与数据库中的密码进行比较。这是做到这一点的正确方法吗?如果是的话,我如何实现这一目标?用户输入密码的加密必须与bcrypt中的一样,我该怎么做?提前致谢。比较由bcrypt加密的密码

+0

可能是https://stackoverflow.com/questions/35590105/authentication-with-bcrypt-hashed-password的副本 – volatilevar

+1

[使用bcrypt验证散列密码]的可能重复(https://stackoverflow.com/questions/) 35590105/authentication-with-bcrypt-hashed-password) – 1615903

回答

2

其实你不会加密密码,因为他们可能会被解密。正确的做法是,散列一个密码并存储散列值。如果用户输入密码,您还可以散列该值并将其与已保存的散列值进行比较。这是正确的方法,因为散列函数是单向函数(不可逆),请参阅here

散列方法可以防止有人可以解密密码。您应该注意像SHA-2或SHA-3这样的安全散列函数,因为一些散列函数不再安全,请参阅list of broken hash functions

+1

尽管OP会混淆术语,但bcrypt实际上是一种哈希函数。 – 1615903