2013-03-10 73 views
0

我得到了一個我在2年前寫過的函數。該函數使用base64編碼方法以及sha1哈希和一堆預定義值。下面是函數這個PHP函數會提供足夠的數據散列嗎?

 function secure_encode($x) { 
     return strtr(base64_encode(substr($_SESSION['Cksum'],rand(0,28),4) . $x), '+/=', '-_+'); 
    } 

    $express = array(); 

    $express['0'] = "58464db46ba2ea0f54.8030317175114db46ba2ea1004.65676456123564db46ba2ea10b2.4389053856-5caecd9b6220eaea81e40641caad165ad681d49c-Bh8j1kU.kAIznsh5WhHH-XO5FJFGU6cMySblUAKkpdg==/".date(); 

    $express['1'] = "113354db46791181958.25326465113804db46791181a07.35447338301094db46791181ab9.28188138-c5438adfef452a06fffd8a1e755322796122620d-O1dnRG.KafUv8.JcISrn-Nhab7EDL.2lkQ68WfT1Pzg==/"; 

    $express['2'] = "299084db46ac385b7d9.3958582716614db46ac385ba68.3911624024184db46ac385bee5.3681503764-b249050b2cc8ec9a9a24e6775fd6d679982ce35e-E7rS6jrbjYdHptZPAe4v-WNwjOR1HEEMJURn/RUN.AA==/"; 

    $express['3'] = "233534db46ae7c7a2d7.98941083259824db46ae7c7a390.88346488191674db46ae7c7a449.03466538-08741422c3f59599e4c170ed4871e387a921268f-L/pA2jYJ/mEjZmyjHWt5-fVSwQyCRfxsR8lCmQkw2aw==/"; 

    $express['4'] = "107034db46b02569962.3398546439324db46b02569a26.08097334169974db46b02569ad1.521504520-e141a88ba3299debc3abc9a04d5953a7604df28e-JGkKsXa19ZEPuasSZLC5-B8oD3S68DPUL3zrZTjELZg==/"; 

    $pass = $_POST['auth_pass']; 
    $hash = secure_encode((sha1($express['0']."//!%$!*&^@n3.".$pass).sha1($express['2']."//!%$!*&^@n3.".$pass))); 

例如散列值:123ABC將返回

NjY1NGI0ZTIzMTc5NmViNGU5MjhiMDgyZmUyMDYwNDAzYWQzM2NjYTJmZTYzYjk2ZTg3MzVkMTRmMTc2MjI0NjdkMjY2ZDg0MjAyMGY1ZTc +

基於該代碼段將這個散列足以散列等基本用戶數據姓名,電話號碼,地址和出生日期,還是使用其他形式更好?哈希?此外,如果片段可以改進,請在可以使其更好的部分指出。

編輯:我目前使用這個函數在我製作的論壇軟件上散列用戶密碼。而且我從未遇到用戶帳戶被破壞或密碼被盜的問題。

+0

你想做什麼?散列或*加密*數據? – 2013-03-10 00:21:58

+0

@ SverriM.Olsen我想要保護它免受間諜眼睛的侵害 – Random 2013-03-10 00:23:21

+0

*我從來沒有被黑客攻擊*'!='*安全做法*。它甚至不能證明運氣。在'BLOWFISH'中使用'crypt()'。不要重複,不要「推出自己的」哈希或算法方法。 – 2013-03-10 00:31:28

回答

6

你在做什麼叫做默默無聞的安全。僅僅因爲有人不知道你的算法並不能保證它的安全。如果有人闖入你的網站並查看你的哈希函數,那麼你的「自定義」哈希將很容易受到攻擊,因爲你所做的全部是base64編碼的鹽醃SHA1哈希。

不要編寫自己的函數。使用可信的散列函數,如Bcrypt,這些攻擊代價昂貴。

此外,請務必閱讀this article以獲得更深入的解釋。

+0

我知道這個事實,如果Salt Keys(在我的情況下是Express)暴露整個系統的地方將會落入。 – Random 2013-03-10 00:32:12

+0

@ user2108921:這並不好。 – Blender 2013-03-10 00:33:44

+0

是的,我知道這不是很好,如果這個價值暴露在哪裏,是一個很差的安全。好的,謝謝我正在研究Bcrypt – Random 2013-03-10 00:35:30

相關問題