iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 2
0
Modern Web

"您收到來自PHPの加菜便當"系列 第 2

[DAY2]雜湊的方式

便當盒Answer回顧:

如果利用POST來傳送表單內容,相對GET來說會安全許多!
上面只是相對來說,
但如果我們真正要做的話,
我們是不是就要將密碼加密呢?
不要利用明碼的方式儲存在資料庫,這樣比較安全~


我們在網路上能看到很多雜湊方式,那其中那些又是推薦使用的呢?
最常看到得雜湊方式應該是md5了吧!
雖然我們知道md5是擁有不可逆的,但是安全嗎?
我們看看來自wiki的資料

MD5訊息摘要演算法
1996年後被證實存在弱點,可以被加以破解

以上我們也簡單討論帶過關於MD5的內容
以前啊我們要用MD5雜湊時,我們是不是使用MD5()這個函式來做雜湊,
但因為現在雜湊的方式越來越多種了,所以PHP就用了一個hash函式
方便使用者調用~
我們來介紹PHP內的hash()函式吧!
那我們該如何知道hash函式內包含哪些演算法呢?
我們可以從PHP的官方網站的hash_algos頁面
我們可以看到裡面包含的演算法有高達46種!
像是常見的MD5、SHA256等等的都有包含在hash函式裡面

    [0] => md2
    [1] => md4
    [2] => md5
    [3] => sha1
    [4] => sha224
    [5] => sha256
    [6] => sha384
    [7] => sha512
    [8] => ripemd128
    [9] => ripemd160
    [10] => ripemd256
    [11] => ripemd320
    [12] => whirlpool
    [13] => tiger128,3
    [14] => tiger160,3
    [15] => tiger192,3
    [16] => tiger128,4
    [17] => tiger160,4
    [18] => tiger192,4
    [19] => snefru
    [20] => snefru256
    [21] => gost
    [22] => gost-crypto
    [23] => adler32
    [24] => crc32
    [25] => crc32b
    [26] => fnv132
    [27] => fnv1a32
    [28] => fnv164
    [29] => fnv1a64
    [30] => joaat
    [31] => haval128,3
    [32] => haval160,3
    [33] => haval192,3
    [34] => haval224,3
    [35] => haval256,3
    [36] => haval128,4
    [37] => haval160,4
    [38] => haval192,4
    [39] => haval224,4
    [40] => haval256,4
    [41] => haval128,5
    [42] => haval160,5
    [43] => haval192,5
    [44] => haval224,5
    [45] => haval256,5

好看到了那麼多種,我們利用其中幾種作示範
例如我們要使用MD5將email進行雜湊
我們可以這樣寫

<?php
    $hashget = hash('MD5', '你的email');
    echo $hashget;
?>

我們可以一起實作看看
http://sandbox.onlinephpfunctions.com/
在網頁上我們將程式碼打好,下方有一個
Execute Code按下去,他就會執行我們上面所寫的程式碼!
https://ithelp.ithome.com.tw/upload/images/20190917/20108017xIp0fVcrUC.png
我們程式執行後的結果,我們可以知道得到了一大串英數字~
這些就能用來代替我們所設定的密碼登入呢!
https://ithelp.ithome.com.tw/upload/images/20190917/20108017H6eEWJZApL.png

那如果我們使用SHA256來進行雜湊呢?
會出現甚麼呢?
有沒有邦友能夠解出這題的答案呢XDDDDD
留言區開放留言!

<?php
    $hashget = hash('SHA256', 'test@nanado.com.tw');
    echo $hashget;
?>

便當盒Question:

當我們要做登入系統時,我們能將密碼+**裝置獨一無二的ID(假設)**進行SHA256雜湊,
得到一串英數字,那這樣是不是就只能透過某一台裝置+正確帳號密碼才能登入呢?

答案下篇揭曉~


上一篇
[DAY1]GET與POST的用法
下一篇
[DAY3]登入系統規劃
系列文
"您收到來自PHPの加菜便當"5

尚未有邦友留言

立即登入留言