我想構建一個登錄應用程序,它有一個用于輸入用戶名和密碼的客戶端,以及一個服務器,然后接收用戶名和密碼。然后服務器應該檢查它收到的密碼是否與已經存儲的哈希匹配。我認為不將未加密的密碼(僅以字符串形式)從客戶端發送到服務器是明智的,因此我已經在客戶端使用 BCrypt 對其進行了加密。但是現在我在服務器端有兩個哈希,但是 BCrypt 只提供了將明文與哈希進行比較的方法,而不是將哈希與哈希進行比較的方法。我現在應該以明文形式將密碼發送到服務器還是有辦法比較兩個哈希值?感謝您的幫助
3 回答

Helenr
TA貢獻1780條經驗 獲得超4個贊
“挑戰-響應”是您應該在谷歌上搜索的術語。
原則:
在服務器端,您存儲了一個散列(加鹽)密碼和鹽。
客戶端首先發送登錄名。
服務器在數據庫中查找登錄的鹽并將其與隨機字符串一起發送給客戶端(這就是挑戰)。
客戶端現在必須按以下方式計算加密密碼:將登錄密碼與鹽連接起來并對其進行哈希處理。將結果與挑戰中的隨機字符串連接起來并對其進行哈希處理。將結果發送到服務器。
服務器現在將散列密碼(存儲在用戶數據庫中)與隨挑戰一起發送的隨機字符串連接起來,并計算散列值。結果必須與從客戶端收到的結果完全相同。
添加回答
舉報
0/150
提交
取消