我想将Apache的htpasswd util与我在MVC中的自定义BasicAuthenticationAttribute一起使用。但是,基于htpasswd文档,我不确定如何计算密码哈希以与htpasswd文件进行比较。是否有托管的.NET库或一些简单的文档可以帮助我解决这个问题?
编辑:Heinzi指出的问题适用于SHA,但我也希望能够处理MD5(APR1?)哈希变体。我已经看过一些代码示例,但它们对我来说有点太不透明了。同样,对于链接到Apache文档中的实际代码文件。
理想情况下,我希望能够获取任何客户端的.htpasswd文件并将其放入我的ASP.NET站点进行身份验证,而不受使用哪种哈希方法的限制。
答案 0 :(得分:4)
我最近将对Apache MD5的支持添加到CryptSharp。它可以为您计算和验证这些密码。因为它是一个变种,你需要为Crypter.MD5.Crypt()方法提供一个额外的参数:
string cryptedPassword = Crypter.MD5.Crypt("HelloWorld", new CrypterOptions
{
{ CrypterOption.Variant, MD5CrypterVariant.Apache }
}));
验证:
bool matches = Crypter.CheckPassword("HelloWorld", cryptedPassword);
您也可以使用Crypt()方法本身进行验证,但CheckPassword()会自动确定它是否为Apache MD5,DES等。
希望这有帮助
詹姆斯