顯示廣告
隱藏 ✕
※ 本文為 terievv 轉寄自 ptt.cc 更新時間: 2013-05-30 01:50:14
看板 PHP
作者 a60301 (mingtsay〃小喵)
標題 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   mt@moztw.org ◤          ◤◤    wnqui  

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

--
※ 看板: terievv 文章推薦值: 0 目前人氣: 0 累積人氣: 223 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇