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

C# 如何在C中解析和使用htpasswd文件#,c#,.htpasswd,C#,.htpasswd,我想在MVC中使用Apache的htpasswd util和我的自定义BasicAuthenticationAttribute。但是,根据htpasswd文档,我不确定如何计算密码散列以与htpasswd文件进行比较。是否有一个托管的.NET库或一些简单的文档可以帮助我解决这个问题 编辑:Heinzi指出的问题对于SHA来说很好,但我也希望能够处理MD5(APR1?)散列变量。我看过一些代码示例,但它们有点太不透明,我无法理解。对于Apache文档中链接到的实际代码文件也是如此 理想情况下,我希

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

编辑:Heinzi指出的问题对于SHA来说很好,但我也希望能够处理MD5(APR1?)散列变量。我看过一些代码示例,但它们有点太不透明,我无法理解。对于Apache文档中链接到的实际代码文件也是如此


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

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

要验证:

bool matches = Crypter.CheckPassword("HelloWorld", cryptedPassword);
您也可以使用Crypt()方法本身进行验证,但是CheckPassword()会自动确定它是否是Apache MD5、DES等

希望这有帮助


James

这个答案是针对PHP的,但是.NET库还包含SHA1和MD5的类:@Chris您的标题已编辑,c#已删除。也许你想把它放回去,因为我认为它对这个问题很有意义。我厌倦了这个该死的网站上过于热心的编辑。我把C#放在标题中,因为在这个网站的某些地方(例如,右边的相关部分),你看不到标签,所以如果它不在标题中,你可能不知道这是一个C#问题。这整个该死的网站网络受到了想成为网站管理员的人的过度控制。@克里斯:这是一个协作网站,所以让别人编辑你的文章是完全正常的(改进格式)。虽然我同意你的文章并不是所有的编辑都是好的,这甚至不关编辑是否可以接受。问题是它们是否必要。个人风格和观点不是编辑帖子的有效理由。显然有人克隆了你的源代码,并为它制作了一个nuget包。您应该尝试联系他们以协调这项工作,以便可以更新现有的nuget软件包以包括您的最新版本。是的,我看到了并联系了他。他没有更新它(奇怪的是,自述文件除外),所以我发布了一个官方的CryptoSharp包:
bool matches = Crypter.CheckPassword("HelloWorld", cryptedPassword);