如何在C#中解析和使用htpasswd文件

时间:2013-03-01 07:59:11

标签: c# .htpasswd

我想将Apache的htpasswd util与我在MVC中的自定义BasicAuthenticationAttribute一起使用。但是,基于htpasswd文档,我不确定如何计算密码哈希以与htpasswd文件进行比较。是否有托管的.NET库或一些简单的文档可以帮助我解决这个问题?

编辑:Heinzi指出的问题适用于SHA,但我也希望能够处理MD5(APR1?)哈希变体。我已经看过一些代码示例,但它们对我来说有点太不透明了。同样,对于链接到Apache文档中的实际代码文件。

理想情况下,我希望能够获取任何客户端的.htpasswd文件并将其放入我的ASP.NET站点进行身份验证,而不受使用哪种哈希方法的限制。

1 个答案:

答案 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等。

希望这有帮助

詹姆斯