我正在ASP.NET MVC中重寫一個PHP網站。我想保持相同的用戶羣,但密碼使用PHP crypt()函數進行散列處理。我需要.Net中的相同功能,以便我可以在登錄時散列密碼,並根據用戶數據庫中的散列密碼進行檢查。.net中的crypt()函數?
隱窩在這種情況下使用CRYPT_MD5實現 - 哈希全部以$ 1 $
我試過Phalanger,但它並沒有crypt函數的MD5實現。
有沒有人知道.Net中的一個? CodeProject上crypt()的C#示例使用DES,而不是MD5。
我在C#中嘗試了以下代碼,使用不同的鹽+密碼,密碼+鹽和鹽以及不帶$ 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一個微不足道的PHP腳本不被認爲是安全散列,你可能希望將系統升級到SHA-256。 – TravisO 2009-01-19 23:22:17
btw,`控制檯。WriteLine(「{0}的哈希是{1}」,密碼,s);' – abatishchev 2010-07-26 05:51:07