2011-01-30 228 views
0

我正在嘗試整合vBulliten和Django的用戶數據庫。我知道vB使用md5算法對它的密碼進行哈希處理,並使用salt。我有每個vB用戶的salt數據和密碼,並想知道如何將這些帳戶導入Django。Django中的密碼哈希

我試過很明顯,改變了Django用戶的密碼;

MD5 $ vb's_salt $ vb's_password

這只是拋出回Django的登錄表格,有消息說「用戶名和密碼不匹配」

任何想法?

+0

你能提供一個vBulletin條目已知密碼的例子(如「密碼」 :)然後我們可以幫助更容易,甚至拿出一些自定義代碼來允許這個。 – nealmcb 2011-02-16 05:56:53

回答

1

明顯的第一個問題:您是如何更改用戶密碼的?您需要將algo $ salt $ password字符串直接放入數據庫中。

很可能vBulleting使用另一種方式從密碼和salt中創建密碼哈希。如果是這種情況,您可能需要實現另一種登錄方式,以不同的方式檢查用戶密碼,然後以Django格式存儲它。

+0

stefanw,感謝您的參與。我通過網站的管理部分將密碼添加到數據庫。您知道以algo $ salt $ password格式顯示密碼的密碼框嗎?這是通過手工一次性完成的,以檢查它是否可行。其目的是最終編寫一個Python腳本來完成這個任務。 – 2011-01-31 19:54:18

1

您可以手動更新數據庫的密碼,或者編寫一些Python。

一個用戶對象的密碼屬性是在本格式的字符串:

hashtype$salt$hash

這hashtype,鹽和散列,由美元符號字符分隔。

Hashtype是sha1(默認),md5或crypt - 用於執行密碼單向散列的算法。 Salt是一個隨機字符串,用於限制原始密碼以創建哈希。請注意,只有具有標準Python crypt模塊的平臺才支持crypt方法。

例如:

sha1$a1976$a36cc8cbf81742a8fb52e221aaeab48ed7f58ab4

的set_password()和check_password()函數處理的設置和幕後這些值的檢查。

(參考:http://docs.djangoproject.com/en/dev/topics/auth/#passwords

+0

崇高,鑑於我對stefanw的回覆的上述評論,你會建議失敗是因爲我沒有使用django的用戶對象方法來更改測試用戶的密碼嗎?再次感謝您的輸入。 – 2011-01-31 19:56:19

1

vBulletin不確實鹽和散列密碼方式與Django的相同。

vBulletin確實是這樣的:

$hash_stored_in_database = md5(md5($plaintext_password) . $salt);