我正在嘗試整合vBulliten和Django的用戶數據庫。我知道vB使用md5算法對它的密碼進行哈希處理,並使用salt。我有每個vB用戶的salt數據和密碼,並想知道如何將這些帳戶導入Django。Django中的密碼哈希
我試過很明顯,改變了Django用戶的密碼;
MD5 $ vb's_salt $ vb's_password
這只是拋出回Django的登錄表格,有消息說「用戶名和密碼不匹配」
任何想法?
我正在嘗試整合vBulliten和Django的用戶數據庫。我知道vB使用md5算法對它的密碼進行哈希處理,並使用salt。我有每個vB用戶的salt數據和密碼,並想知道如何將這些帳戶導入Django。Django中的密碼哈希
我試過很明顯,改變了Django用戶的密碼;
MD5 $ vb's_salt $ vb's_password
這只是拋出回Django的登錄表格,有消息說「用戶名和密碼不匹配」
任何想法?
明顯的第一個問題:您是如何更改用戶密碼的?您需要將algo $ salt $ password字符串直接放入數據庫中。
很可能vBulleting使用另一種方式從密碼和salt中創建密碼哈希。如果是這種情況,您可能需要實現另一種登錄方式,以不同的方式檢查用戶密碼,然後以Django格式存儲它。
stefanw,感謝您的參與。我通過網站的管理部分將密碼添加到數據庫。您知道以algo $ salt $ password格式顯示密碼的密碼框嗎?這是通過手工一次性完成的,以檢查它是否可行。其目的是最終編寫一個Python腳本來完成這個任務。 – 2011-01-31 19:54:18
您可以手動更新數據庫的密碼,或者編寫一些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)
崇高,鑑於我對stefanw的回覆的上述評論,你會建議失敗是因爲我沒有使用django的用戶對象方法來更改測試用戶的密碼嗎?再次感謝您的輸入。 – 2011-01-31 19:56:19
vBulletin不確實鹽和散列密碼方式與Django的相同。
vBulletin確實是這樣的:
$hash_stored_in_database = md5(md5($plaintext_password) . $salt);
你能提供一個vBulletin條目已知密碼的例子(如「密碼」 :)然後我們可以幫助更容易,甚至拿出一些自定義代碼來允許這個。 – nealmcb 2011-02-16 05:56:53