我正在重写ASP.NET MVC中的
PHP网站.我想保持相同的用户群,但使用PHP crypt()函数对密码进行哈希处理.我需要.Net中的相同功能,以便我可以在登录时散列密码并根据用户数据库中的散列密码进行检查.
在这种情况下,crypt使用CRYPT_MD5实现 – 哈希都以$1 $开头
我尝试了Phalanger,但它没有crypt功能的MD5实现.
有没有人知道.Net中的一个? CodeProject上的crypt()的C#示例使用DES,而不是MD5.
我在C#中尝试了以下代码,使用盐密码,密码盐和盐的不同排列,包含和不包含$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; }