2012-11-11 2753 views
20

我在ubuntu中用apache2为我的网页创建了一个保护。 现在我正在用C++创建一个应用程序,我希望它使用与Apache2用于验证的文件相同的文件,但是我的问题是我不知道如何解密由apache2生成的密码。 (也许我需要一个用于加密的密钥)。解密用htpasswd创建的密码

谢谢。

回答

37

.htpasswd条目是HASHES。他们不是加密的密码。哈希被设计为不可解密。因此,没有办法(除非你懒惰的时间)从.htpasswd文件获取密码。

您需要做的是将相同的散列算法应用于提供给您的密码,并将其与.htpasswd文件中的散列值进行比较。如果用户和哈希是相同的,那么你就去了。

+0

我明白了。 但是,当我在网页中进行身份验证时,他做了什么? – Mils

+3

@Mils:它散列你提交的密码并比较散列值。 –

+4

Apache使用提供的密码,对其进行散列并将提供的用户名和生成的散列值与.htpasswd文件中的用户名(如果存在)条目进行比较。如果他们匹配的用户是允许的。 –