2014-10-17 44 views
1

目前,我正在使用我在網上找到的代碼加密輸入數據庫的數據,並作爲該主題的介紹。我的問題來自兩篇WikiHow文章(特別是這些文章):一篇關於login加密;另一個在session security。兩篇文章看起來相當不錯;然而,這兩者之間存在一個關鍵的區別:前者聲明所用的hasing算法的JavaScript定義($password = hash('sha512', $password . $salt)是PHP所必需的,它本身可以工作)在變量上使用加密(哈希算法)

即使包含PHP hash()方法在這兩篇文章),第一狀態的筆者,'sha512'加密本身必須是外部使用另一種語言(筆者提出的JavaScript)來定義

從閱讀PHP文檔,我的印象是hash()能處理由標識符識別的一系列預定義哈希算法,例如whirpool,sha512等。這些PHP標識符可以通過hash_algos()獲取(或者您可以閱讀文檔)。

我錯在認爲特定的預定義散列算法的外部定義是不必要的?

+1

散列在Javascript是唯一真正企圖在通過不安全的HTTP協議傳輸之前保護密碼。密碼實際上只能通過HTTPS發送。 – Jonathon 2014-10-17 13:53:49

+0

@Jonathon這就是我的想法。所以,真的,JavaScript需要的唯一原因是轉移不安全? – Thomas 2014-10-17 14:07:22

+1

有點咆哮,但他讓公平點> http://matasano.com/articles/javascript-cryptography/ – Dennis 2014-10-17 14:07:40

回答

1

我看不需要使用JavaScript來散列字符串。個人而言,我寧願使用bcrypt而不是sha512,但它很好,它不是一個真正的弱算法。

$password = hash('sha512', $password . $salt) 

這是一個散列你的密碼的好方法,如果你覺得喜歡去全油門,你可以看一下PBKDF2

http://en.wikipedia.org/wiki/PBKDF2 https://defuse.ca/php-pbkdf2.htm