2017-05-31 137 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