ASP.NET MVC에서 PHP 웹 사이트를 다시 작성하고 있습니다. 동일한 사용자 기반을 유지하고 싶지만 암호는 PHP crypt() 함수를 사용하여 해시됩니다. 나는 닷넷에서 같은 기능을 필요로하기 때문에 로그인 할 때 패스워드를 해쉬 할 수 있고 사용자 데이타베이스의 패스워드를 해쉬 할 수있다. 이 경우.Net의 PHP crypt() 함수?
토굴은 CRYPT_MD5 구현을 사용 - 해시는 모든 $ (1) 내가 팔란 저를 해봤 $
로 시작하지만 토굴 함수의 MD5 구현이 없습니다.
누군가가 .Net에 대해 알고 있습니까? CodeProject에서 crypt()의 C# 예제는 MD5가 아닌 DES를 사용합니다.
나는 C#에서 salt + password, password + salt 및 salt와 $ 1 $ 접두어 및 $ suffix의 유무에 관계없이 다음 코드를 시도했습니다. 아무도는 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
btw,'콘솔.WriteLine ("{0}의 해시는 {1}", password, s); ' – abatishchev
Abatishchev, 주어진 입력 문자열에 대해 PHP와 동일한 해시를 생성 할 수 있는지 확인하는 빠른 스파이크였습니다. 귀하의 의견은 주제를 벗어나 도움이되지 않습니다. –