※ 本文為 terievv 轉寄自 ptt.cc 更新時間: 2013-05-30 01:50:14
看板 PHP
作者 標題 Re: [請益] 明碼常用加密組合方式
時間 Mon May 20 21:06:38 2013
※ 引述《tas72732002 (蔥頭)》之銘言:
: 最近需要處理到使用有關明碼打亂的功能,
: 想請問一下,一般會如何自訂明碼打亂方式來增加其安全性
: 之前是常用md5($password) 但發現如果只使用這樣, 很容易被破解,
: 想請問各位大大 是否可提供一下常用的打亂方式,如合'組合'才會安全~
<?php
function new_salt(){
$chars = "abcdefghijklmnopqrstuvwxyz" . // 太長占版面所以分成兩行
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$salt = "";
// 設定 salt 的長度為 16
for($i = 0; $i < 16; ++$i)
{
$salt .= $chars[mt_rand(0, strlen($chars) - 1)];
}
return $salt;
}
function string_to_hashed($str, $salt = NULL)
{ if($salt == NULL) $salt = new_salt();
$hashed = hash("sha256", $str.$salt); // 把要加密的資料加上 saltreturn $salt.$hashed; // 記得也把 salt 傳回來
}
function hashed_compare($str, $hashed)
{
$salt = substr($hashed, 0, 16); // 取出 salt (注意長度要一致)
$str_hashed = string_to_hashed($str, $salt);
return ($str_hashed == $hashed); // 比較是否為一樣的內容
}
--
★★∥∥ ○ ◢ 〞〞` ◣ ◥◣◢◣◢◣ ◢▏。 ○ ο ∣★★
★★| ° ° ◢ ╮ ██◤ █◤◥◤█ ∥∥ o ° ∥∥★★
★★∥∥ 。 ●● ● ◤ ◥ █ █ ∥∥ ◢╱╱﹋﹋◣◣ 。 ∣★★
★★∣ ◥◥ˍ ◤◤ ◢◤ ◢◢◤██◤ ◣ ◢◢╱ ● ︶︶ ( ∥∥★★
★★∥∥ ( ◢◤ ◤ing ∥∥say ◢███ ╰ ◤ ζ ) ∣★★
★★│ ) mt.rmstudio.tw ︾ mt@moztw.org ◤ ◥◢ ◤◤ wnqui ∥∥★★
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.157.72
→ :每次都用不同的salt!1F 05/20 21:17
推 :推!! 非常精美!!2F 05/20 21:22
註 a60301:如有需要也可以把 $hashed = hash("sha256", $str.$salt);改成 $hashed = hash("sha256", md5($str) . $salt);
推 :推!!3F 05/20 22:27
→ :strlen($chars)是否應該為strlen($chars)-1?4F 05/20 23:39
回 a60301:昨天寫太快了沒注意,感謝提醒! 05/21 08:02→ :我不是資安專業,但是我猜測這樣做並沒有比較安全耶5F 05/21 00:48
→ :可能不同使用者有自己獨特的salt就夠了,每次不同的salt
→ :,而且傳輸時又夾帶salt,駭客仍然只需要針對該使用者製作
→ :rainbow table即可。
→ :參考資料:http://0rz.tw/RQSgE 如有誤還懇請指證,謝謝
→ :可能不同使用者有自己獨特的salt就夠了,每次不同的salt
→ :,而且傳輸時又夾帶salt,駭客仍然只需要針對該使用者製作
→ :rainbow table即可。
→ :參考資料:http://0rz.tw/RQSgE 如有誤還懇請指證,謝謝
Understanding Hash Functions and Keeping Passwords Safe | Nettuts+ From time to time, servers and databases are stolen or compromised. With this in mind, it is important to ensure that some crucial user data, such as passwords, ...
推 :同樓上的疑問 salt不是不該被存進資料庫嗎?10F 05/21 01:04
回 a60301:基本上資料庫照理來說應該要有措施,防止別人拿到hashed字串 05/21 08:07否則任何的雜湊法也只是遲早被暴力破解出來而已
不然可以選用雜湊時間花費較久的雜湊演算法也是可以
→ :salt不存起來,那該如何產生出一樣的結果?11F 05/21 01:06
→ :可以放在資料庫以外的地方,只要保證同一個明碼必定用同12F 05/21 06:44
→ :一個salt就好了。較土就是大家共用一個salt。
※ 編輯: a60301 來自: 101.12.94.167 (05/21 08:09)→ :一個salt就好了。較土就是大家共用一個salt。
→ :總之一切都要看系統被拿走的資料多到什麼地步14F 05/21 13:22
推 :打這篇也太花時間了15F 05/22 11:07
※ 編輯: a60301 來自: 114.34.74.8 (05/22 11:55)--
※ 看板: terievv 文章推薦值: 0 目前人氣: 0 累積人氣: 223
回列表(←)
分享