2012-04-01 44 views
1

是否哈希處理使之更安全時使用兩次密碼?我的例子是在CodeIgniter中,我把它分解到最低限度。請不要指出這個例子中的所有錯誤,這只是一個例子。散列時使用密碼兩次使它更安全嗎?

<?php 
function user_signup(){ // The normal way 
    $this->load->database(); 
$new_user_insert = array(
    'password' => sha1($salt . $this->input->post('password'))); 

} 
function user_signup(){ // The double insert way 
    $this->load->database(); 
$new_user_insert = array(
    'password' => sha1($this->input->post('password') . $salt . $this->input->post('password'))); 

} 
} 

編輯: 我的想法是,它將使在放長一倍,一個例子(用戶名:joe,密碼:123456789)。因此,與其有我的哈希123456789彩虹表,這將是123456789123456789。我知道這是一個過於簡單,和哈希看起來更像01a967f5d27b9e910754729a669504a60d2aa865,但將是黑客將需要更大的彩虹table.Please糾正我,如果我錯了。

預先感謝您。

+0

」兩次插入密碼是否安全? - 取決於你插入它的位置。 :) – 2012-04-01 03:08:14

+2

沒有。事實上,保證密碼安全的最好方法是永遠不要記錄它! ;) – zombat 2012-04-01 03:11:17

+2

@zombat:他沒有記錄它,只是一個密碼單向散列。加鹽。實際上,這是非常好的做法。 – 2012-04-01 03:29:20

回答

3

一個是黑客將需要更大的彩虹表

這是不是這樣的。

爲簡單起見,假設您的密碼必須是4位數字。 (當然,這可以推廣到更復雜的密碼。)然後有10,000個可能的密碼。如果與自身串聯密碼生成一個18位的數字,攻擊者可以從前三推斷的第二次九個位數:1234salt1234是可能有效,但1234salt4321不能,也不會被包含在彩虹表。 附加數字,帶來已知信息的功能,不會增加額外的複雜性。

將一個用戶特定的 salt添加到密碼中作爲哈希防禦攻擊者可以獲取密碼哈希值以及誰知道系統。特別是,攻擊者知道散列用戶密碼的算法。假設爲四個字符的數字密碼之前,這樣使用蠻力的策略仍然需要攻擊者嘗試只有10,000組合(0000salt0000,0001salt0001,...,9999salt9999)。最初的策略(不要將密碼與自己串聯)還需要10,000個組合(0000salt,...,9999鹽),所以不會更難(實際意圖)。 「

+0

謝謝,我在思考了一段時間後得出了同樣的結論。你是唯一回答我的問題的人。 – 2012-04-01 17:14:29

0

一般來說,沒有。輸入密碼兩次對於檢查用戶是否正確輸入密碼非常有用,但對數據庫中的密碼沒有任何用處。

0

第二次輸入密碼的目的只是爲了確保用戶沒有輸入錯誤!它本身實際上並沒有提高安全性,當然,在數據庫中存儲兩次也沒有多大的收穫。

這是爲了避免錯別字。如果你不得不輸入密碼兩次,機會就是你想要的密碼。他們想避免讓 密碼爲「blah」的人稍後必須檢索其密碼 ,因爲他們錯誤地鍵入了「blaj」。特別是 ,因爲密碼字段顯示爲星號(*********),有時候它很難說明是否鍵入了你認爲輸入的內容 - 人們很可能在沒有意識到的情況下發生拼寫錯誤( ) 。有些網站做 也與電子郵件地址時,至關重要的是,作爲 以及正確的。如果攻擊者知道你對散列密碼策略

why enter password 2 times?

+1

他的代碼不會提示用戶兩次。 – 2012-04-01 03:30:14

相關問題