我有一个使用bcrypt加密用户名密码的网页,然后这些密码存储在数据库中。我有一个在QT上运行的c ++程序需要对用户进行身份验证,为了做到这一点,我必须加密用户输入的密码并将其与数据库中的密码进行比较。这是正确的方法吗?如果是这样我怎么做到这一点?用户输入密码的加密必须与bcrypt的密码相同,我该怎么做?提前谢谢。
答案 0 :(得分:2)
实际上,您不会对密码进行加密,因为密码可能会被解密。正确的方法是哈希密码并存储哈希值。如果用户输入密码,您还会将该值哈希并将其与保存的哈希值进行比较。这是正确的方法,因为哈希函数是单向函数(不可逆),请参阅here。
哈希方法可以防止有人解密密码。您应该使用SHA-2或SHA-3等安全散列函数,因为某些散列函数不再安全,请参阅list of broken hash functions。