作者a60301 (mingtsay〃小喵)
看板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); // 把要加密的資料加上 salt
return $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 ︾ [email protected] ◤ ◥◢ ◤◤ wnqui ∥★
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.157.72
1F:→ MOONRAKER:每次都用不同的salt! 05/20 21:17
2F:推 azurewings:推!! 非常精美!! 05/20 21:22
註 a60301:如有需要也可以把 $hashed = hash
("sha256", $str.$salt);
改成 $hashed = hash
("sha256", md5
($str) . $salt);
3F:推 jikotw74:推!! 05/20 22:27
4F:→ kovenkoven:strlen($chars)是否應該為strlen($chars)-1? 05/20 23:39
回 a60301:昨天寫太快了沒注意,感謝提醒! 05/21 08:02
5F:→ Wush978:我不是資安專業,但是我猜測這樣做並沒有比較安全耶 05/21 00:48
6F:→ Wush978:可能不同使用者有自己獨特的salt就夠了,每次不同的salt 05/21 00:49
7F:→ Wush978:,而且傳輸時又夾帶salt,駭客仍然只需要針對該使用者製作 05/21 00:50
8F:→ Wush978:rainbow table即可。 05/21 00:50
10F:推 eight0:同樓上的疑問 salt不是不該被存進資料庫嗎? 05/21 01:04
回 a60301:基本上資料庫照理來說應該要有措施,防止別人拿到hashed字串 05/21 08:07
否則任何的雜湊法也只是遲早被暴力破解出來而已
不然可以選用雜湊時間花費較久的雜湊演算法也是可以
11F:→ kovenkoven:salt不存起來,那該如何產生出一樣的結果? 05/21 01:06
12F:→ MOONRAKER:可以放在資料庫以外的地方,只要保證同一個明碼必定用同 05/21 06:44
13F:→ MOONRAKER:一個salt就好了。較土就是大家共用一個salt。 05/21 06:46
※ 編輯: a60301 來自: 101.12.94.167 (05/21 08:09)
14F:→ kovenkoven:總之一切都要看系統被拿走的資料多到什麼地步 05/21 13:22
15F:推 fr373969:打這篇也太花時間了 05/22 11:07
※ 編輯: a60301 來自: 114.34.74.8 (05/22 11:55)