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

Chr*_*ris 4 c# .htpasswd

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

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

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

Jam*_*mes 5

我最近在CryptSharp中添加了对Apache MD5的支持。它可以为您计算和验证这些密码。由于这是一个变体,因此您需要为Crypter.MD5.Crypt()方法提供一个额外的参数:

string cryptedPassword = Crypter.MD5.Crypt("HelloWorld", new CrypterOptions
  {
    { CrypterOption.Variant, MD5CrypterVariant.Apache }
  }));
Run Code Online (Sandbox Code Playgroud)

验证:

bool matches = Crypter.CheckPassword("HelloWorld", cryptedPassword);
Run Code Online (Sandbox Code Playgroud)

您也可以使用Crypt()方法本身进行验证,但是CheckPassword()会自动确定它是否是Apache MD5,DES等。

希望这可以帮助

詹姆士