有關加密的一點點(md5+salt)

作個筆記吧,最近畢設項目進展到了登陸註冊,正好要考慮考慮加密的問題,因而就有了這篇筆記 :)前端


參考:數據庫

whatday - salt鹽度與用戶密碼加密機制後端


正文

此次正文來得真快。app

按照整個流程來講測試

註冊:網站

  1. 用戶填寫帳號密碼,點擊註冊
  2. 前端使用一個固定的salt值拼接到密碼上
  3. 前端使用md5加密拼接後的密碼
  4. 把拼接加密後的內容發送給後端
  5. 後端再隨機生成一個salt值,再次拼接到密碼上
  6. 後端把密碼和那個隨機生成的salt值都存到數據庫裏

登陸:加密

  1. 用戶提交密碼,
  2. 前端使用一個固定的salt值拼接到密碼上
  3. 前端使用md5加密拼接後的密碼
  4. 把拼接加密後的內容發送給後端
  5. 後端從數據庫裏取出帳號對應的密碼 和 註冊時生成的salt值
  6. 匹配 數據庫中的密碼 是否等於 前端傳遞的密碼+salt值

關於加salt 與不加salt的區別

非加鹽值MD5等均可以經過大型的密碼(如彩虹表)表進行對比解密,因此相對而言至關的輕鬆,而帶有加鹽值的密文就相對而言複雜的多,如今的MD5表大概是260+G,如何加鹽值的可能性有10000個,那麼密碼錶的應該是MD5 size*10000,就能夠解密出原MD5表可以解密的密碼了,一些網站也提供了對應的salt解密,可是測試之後效果並非很是好,如常規的admin888也未解密出,實在是遺憾,畢竟MD5本是不可逆的,帶入隨機值解密出最終密碼的可能性就更低了,至少是相對大多數人而言的。spa

如何肯定salt值

這個就不須要我說了吧,salt值都是能夠本身定的。.net

const salt = 'HappySalt'
複製代碼
相關文章
相關標籤/搜索