2016-09-07 89 views
-1

我正在使用Werkzeug進行密碼散列,以便用戶輸入的密碼將是安全的(至少)。將散列密碼轉換爲字符串werkuzeug python

比方說我的應用程序如下:

當用戶獲取登錄我會用check_password_hash,然後登錄用戶裏面。

用戶登錄後,我想向他們顯示他們的密碼。

的問題我遇到:

如何轉換的哈希密碼返回字符串顯示用戶自己的密碼?

我的代碼如下:

>>> import werkzeug.security as ws 
>>> ws.generate_password_hash('abcdefg') 
'pbkdf2:sha1:1000$fYAXLNA6$637528ae2fa195304c328d585e805b164f1c718f' 
>>> ws._hash_internal('pbkdf2:sha1:1000', 'fYAXLNA6', 'abcdefg') 
('637528ae2fa195304c328d585e805b164f1c718f', 'pbkdf2:sha1:1000') 

現在我該怎樣轉換這個 '6375 ......' 回 'ABCDEFG'?

我有權訪問數據庫和所有其他所需的東西。基本上我是管理員!

注意:我無法使用用戶在登錄時輸入的密碼。我只能使用數據庫中的密碼。

+0

爲什麼要顯示密碼給用戶? – vz0

+0

其實密碼不會顯示給用戶,這個密碼將被用於刮另一個網站(https://vtop.vit.ac.in/parent/parent_login.asp),並在沒有需要的情況下自動出席用戶要輸入所有DOB,手機號碼,我將存儲一個會話,並且每當用戶登錄時,他們都可以檢查他們的出席情況。 – Anivarth

+0

我明白了,這是一個不同的問題。你應該在你的問題中說清楚,否則我的回答就是通常的答案。你需要編寫你自己的密碼管理器。他們通常使用主密碼對數據進行加密,但問題是要使用的主密碼。 – vz0

回答

2

用戶登錄後,我想向他們顯示他們的密碼。

散列密碼的全部目的和原因是你永遠不能這樣做。不是你,不是其他人。

如果有人使用密碼列表訪問或竊取數據庫,那麼將哈希值轉換回原始密碼真的非常昂貴。您將需要一百萬年才能打破並反轉一個密碼。

+0

那麼是否有任何解決方案,而不是使用密碼散列,我可以實現這一點,而不妥協的安全? – Anivarth

1

使用哈希時,我們無法獲取原始文本。通常,所有密碼均以散列值的形式存儲,以使密碼保密(僅爲用戶所知)。所有的服務器都實現這個。如果你想取回密碼,那麼你應該使用對稱密鑰加密。在客戶端和服務器之間共享密鑰的地方(但這是一個非常糟糕的做法)你最好還是使用哈希。

相關問題