2012-11-11 222 views
20

我在ubuntu中用apache2爲我的網頁創建了一個保護。 現在我正在用C++創建一個應用程序,我希望它使用與Apache2用於驗證的文件相同的文件,但是我的問題是我不知道如何解密由apache2生成的密碼。 (也許我需要一個用於加密的密鑰)。解密用htpasswd創建的密碼

謝謝。

回答

37

.htpasswd條目是HASHES。他們不是加密的密碼。哈希被設計爲不可解密。因此,沒有辦法(除非你懶惰的時間)從.htpasswd文件獲取密碼。

您需要做的是將相同的散列算法應用於提供給您的密碼,並將其與.htpasswd文件中的散列值進行比較。如果用戶和哈希是相同的,那麼你就去了。

+0

我明白了。 但是,當我在網頁中進行身份驗證時,他做了什麼? – Mils

+3

@Mils:它散列你提交的密碼並比較散列值。 –

+4

Apache使用提供的密碼,對其進行散列並將提供的用戶名和生成的散列值與.htpasswd文件中的用戶名(如果存在)條目進行比較。如果他們匹配的用戶是允許的。 –