.net中的crypt()函数?

我在ASP.NET MVC中重写了一个PHP网站。 我想保持相同的用户群,但密码使用PHP crypt()函数进行散列处理。 我需要.Net中的相同功能,以便我可以在登录时散列密码,并根据用户数据库中的散列密码进行检查。

在这种情况下,crypt使用CRYPT_MD5实现 - 哈希都以$ 1 $开头

我试过Phalanger,但它没有crypt函数的MD5实现。

有没有人知道.Net中的一个? CodeProject上crypt()的C#示例使用DES,而不是MD5。

我已经在C#中尝试了以下代码,使用salt +密码,密码+ salt和salt以及不带$ 1 $前缀和$后缀的不同排列。 没有提供与PHP相同的结果:

static void Main(string[] args)
{
    const string salt = "somesalt";
    const string password = "fubar";
    const string plaintextString = password + salt;
    byte[] plaintext = GetBytes(plaintextString);
    var md5 = MD5.Create("MD5");
    byte[] hash = md5.ComputeHash(plaintext);
    string s = System.Convert.ToBase64String(hash);
    Console.WriteLine("Hash of " + password + " is " + s);
    Console.ReadKey();
}

private static byte[] GetBytes(string s)
{
    var result = new byte[s.Length];
    for (int i = 0; i < s.Length; i++)
        result[i] = (byte)s[i];
    return result;
}

有一些用于md5哈希的.NET方法,即使它很满意, System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(password, format)也是最容易使用的。 只需传递“md5”作为格式即可。

取决于PHP如何做到这一点,它可能就像在你导入哈希时从$1$开始砍掉$1$一样简单。 它可能更复杂。 如果你可以发布一个示例密码/哈希,我会看看我是否可以想出一些C#,它会为你生成相同的哈希密码。


你有没有看过.NET MD5课程? $ 1 $是12字符盐的一部分。


至少这些看起来很有希望。

对于带$1$盐的CRYPT_MD5使用unix md5crypt。

(用于DES的Unix crypt的AC#实现)

链接地址: http://www.djcxy.com/p/42133.html

上一篇: PHP crypt() function in .Net?

下一篇: OpenMPI: All nodes run as node 0