.Net中的PHP crypt()函数?

Mik*_*ott 7 .net php asp.net security encryption

我正在重写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 $前缀和$ suffix.None给出与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;
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*ott 0

我找到的唯一解决方案是调用一个简单的 PHP 脚本,该脚本只需执行输入字符串的哈希值并返回它:-(