【发布时间】:2017-10-31 18:25:39
【问题描述】:
我有一个使用 bcrypt 加密用户名密码的网页,然后这些密码存储在数据库中。我有一个在 QT 上运行的 c++ 程序需要对用户进行身份验证,为此我必须加密用户输入的密码并将其与数据库中的密码进行比较。这是正确的方法吗?如果是这样,我该如何实现?用户输入密码的加密必须与 bcrypt 的加密相同,我该怎么做?提前致谢。
【问题讨论】:
标签: c++ qt encryption bcrypt
我有一个使用 bcrypt 加密用户名密码的网页,然后这些密码存储在数据库中。我有一个在 QT 上运行的 c++ 程序需要对用户进行身份验证,为此我必须加密用户输入的密码并将其与数据库中的密码进行比较。这是正确的方法吗?如果是这样,我该如何实现?用户输入密码的加密必须与 bcrypt 的加密相同,我该怎么做?提前致谢。
【问题讨论】:
标签: c++ qt encryption bcrypt
实际上您不会加密密码,因为它们可能会被解密。正确的做法是散列密码并存储散列值。如果用户输入密码,您还可以散列该值并将其与保存的散列值进行比较。这是正确的方法,因为哈希函数是单向函数(不可逆),请参阅here。
哈希方法防止有人可以解密密码。您应该注意像 SHA-2 或 SHA-3 这样的安全哈希函数,因为某些哈希函数不再安全,请参阅 list of broken hash functions。
【讨论】: