首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

QQ 登錄密碼傳輸加密機制:哈希驗證而非可逆加密

     編輯:程式設計綜合問答

結論

密碼在客戶端經過哈希處理後傳輸,服務端同樣存儲哈希值,驗證時直接比對哈希,無需解密。

典型流程

  1. 用戶輸入密碼 `P`。
  2. 客戶端計算 `H = Hash(P + Salt)`(Salt 可能來自服務端下發的隨機數或固定鹽值)。
  3. 傳輸 `H`(或 `H` 經過非對稱加密)給服務端。
  4. 服務端查詢數據庫獲取存儲的 `H_stored`,比對 `H == H_stored`。

關鍵技術點

  • 單向哈希:MD5/SHA1(已淘汰)、SHA-256、PBKDF2、bcrypt、Argon2、scrypt。現代系統採用**慢哈希 + 隨機鹽**抵抗彩虹表/暴力破解。
  • 傳輸加密:全鏈路 HTTPS(TLS 1.2+),防止中間人竄改/重放。
  • 防重放:登錄請求攜帶時間戳/Nonce,服務端校驗時效性。
  • 客戶端加密意義:即使 HTTPS 被降級或終端被監控,明文密碼不出內存,降低洩露風險。

數據庫洩露後的安全性

因存儲的是哈希而非明文/可逆密文,攻擊者需進行離線暴力破解,成本極高(取決於哈希算法強度與鹽值長度)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved