什麼是密碼加鹽

 

在講述密碼加鹽之前,我們先梳理一下,我們常見的密碼及加密方式

 

  • 明文密碼

   所謂明文密碼就是沒有對密碼做任何加密措施,前臺傳到後臺的是 "123456",後臺數據庫中保存的就是"123456",這種密碼沒有什麼安全可言,數據庫被拷走,那麼用戶的信息就被連鍋端了。

  • 簡易密碼加密

   所謂簡易密碼加密,就是後臺服務自己定義一些簡單的加密方式,如:密碼反着存、密碼加前後綴、密碼字符串中指定字符被替換等等。這種密碼乍看有點加密的意思,但是你都被黑客大哥給攻破了,你的數據庫,後臺加密程序都被人家拿走了,那不還是相當給人家的明文嘛。所以也很不安全。

  •  MD5 加密

   我知道的第一個正經的加密方式就是MD5, 因爲MD5加密是非對稱加密,是不可逆的。就是給你用MD5算法加密後的字符串,你是沒有任何算法可以反向推算出原始密碼的。既然反向推算不出來,那就很安全了吧。也不盡然。因爲同一個文本通過MD5加密後,生成的密文是固定不變的,所以通過彩虹表進行撞庫,還是能簡簡單單的破譯你的密碼。

  •  密碼加鹽

   MD5算法的加密方式,其實挺好的,但是固定長度的純文本加密容易被撞庫,既然如此,那麼我們就在保存到數據庫之前,在把被MD5加密過後的字符串添加點東西,主要身份就是“攪屎棍”,也被稱之爲加鹽。原來是這樣的MD5(password), 現在是這樣的MD5(MD5(password) + salt),或者是其他算法,這裏的salt就是“鹽”,是後臺服務器在保存密碼時,生成的一段隨機數串,這樣生成最終加鹽後的字符串就很安全了。


對稱加密與非對稱加密

  •   對稱加密

   對稱加密中,加密和解密使用同一把鑰匙,數據發送方與接收方在數據傳輸前商定出一把共用的密鑰,發送方數據傳輸前使用密鑰進行加密,密文傳輸給接收方,接收方使用密鑰進行解密,獲得原始數據。

  •   非對稱加密

   非對稱加密,就是一共有兩把鑰匙,公共密鑰與私有密鑰。二者是成對存在的,使用公鑰加密後,必須使用私鑰才能解密出原始數據。數據發送方使用公鑰對數據進行加密,數據發送到數據接收方,數據接收方使用私鑰對密文進行解密,獲得原始數據。

比較

  • 對稱加密

優點:算法簡單,效率高,速度快。
缺點:不安全,密文與密鑰泄露,數據也就泄露了。

  • 非對稱加密

優點:安全,即使公鑰泄露,如果不同時獲取到私鑰,也無法解析出密文。所以數據接收方要保護好私鑰。
缺點:算法相對複雜,加密與解密過程效率相對很低。


密碼加鹽

      密碼加鹽主要是針對用戶的登錄密碼而言的,原始密碼經過MD5(一種Hash算法)加密後,一些固定長度的簡單純文本密碼的密文也會被破解出來。因爲同一串字符的Hash加密後的密文是固定不變的。所以還是會被破解。


       破解的常用方法有暴力破解和字典破解,也是最笨拙的方法,就是一個一個試。所以二者的破解方法在時間(速度)和空間(存儲)上都需要很大的資源,這樣破解密碼的效率極低。


       此路不通就另擇他法,比如,使用彩虹表進行反向推出你的密碼,彩虹表中是一些常用的固定長度的純文本的哈希值,當這張表越大,破解密碼的機率就越大。所以對於使用哈希算法加密的方式也就不那麼安全了。如果被加密的原文不是固定的,那樣彩虹表就很難進行哈希碼對照了。也就更安全了。


      這種方法就是常說的“加鹽”。鹽(Salt)就是一個隨機生成的字符串,每次修改密碼或者操作,都會生成新的隨機字符串,將原始密碼進行哈希算法之後,進行加鹽,就是把隨機字符串混入到密碼哈希值中,再將這個值再次進行哈希算法計算,這樣生成的密文就更安全了。


     MD5(MD5(password) + salt)        加鹽算法


       這樣密碼就很安全了。我們需要把鹽保存起來,一般建議鹽的保存位置與密文在不同的庫中。因爲用戶登陸時我們需要使用用戶輸入的密碼明文與鹽進行上面的雙重哈希算法計算出密文與數據庫中的密文進行對比是否相同。如果鹽被整丟了,那就完犢子了,因爲上面的MD5算法需要兩個參數(密碼原文與鹽),缺一不可。沒有鹽,就無法計算出密文進行對比。

 

以上就是本次有關密碼加鹽的介紹。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章