2013-04-23 18 views
0

我使用SHA1功能來存儲我在MySQL數據庫密碼..基本MySQL的SHA1密碼有效入住

$passwordHash = sha1($password); 

從谷歌我得到這個 從用戶註冊

sha1(sha1(users_plaintext_password)+random string) 

檢查

server computes sha1(users_hashed_password_in_database + 
$_SESSION['random_string']) 

if $_POST['password'] == 
sha1(users_hashed_password_in_database + $_SESSION['random_string']) 

我的問題是如何檢查驗證?這是正確的方法?並且使用一些隨機字符串作爲鹽給我的密碼更多的保護?

+1

http://php.net/faq.passwords – hakre 2013-04-23 19:13:01

+0

[Secure hash and salt爲PHP密碼](http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords) – 2013-05-11 11:51:55

回答

1

如下我會做到這一點:

$seed = 'some random string'; 
$passwordHash = sha1($password.$seed); 

然後做同樣的用戶輸入數據:

$pass = $_POST['password']; 
if(sha1($pass.$seed) == $passwordHash){ 
    //log user in 
} 

種子是一個好主意,因爲用戶往往挑選的密碼容易猜到。另一個優點是,如果有人設法破解他們的入侵方式,則可以通過更改種子來恢復網站的安全性。

+0

謝謝你的回覆..美好的一天! – user2234992 2013-04-23 19:16:09

+1

不客氣。我的代碼中有錯誤。我把sha1函數的右括號放在錯誤的地方。請檢查編輯。 – 2013-04-23 19:23:35