Sto riscrivendo un sito Web PHP in ASP.NET MVC. Mi piacerebbe mantenere la stessa base di utenti ma le password sono hash con la funzione PHP crypt(). Ho bisogno della stessa funzione in .Net in modo che io possa cancellare una password all'accesso e controllarla con la password con hash nel database degli utenti.Funzione PHP crypt() in .Net?
cripta in questo caso sta usando l'attuazione CRYPT_MD5 - gli hash tutti iniziare con $ 1 $
Ho provato Phalanger ma non ha un'implementazione MD5 della funzione cripta.
Qualcuno sa di uno in. Net? L'esempio C# di crypt() su CodeProject utilizza DES, non MD5.
Ho provato il seguente codice in C#, con diverse permutazioni di sale + password, password + sale e sale con e senza $ 1 $ prefisso e $ suffisso. Nessuno dà lo stesso risultato come 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 non è considerato un hash sicuro e si potrebbe desiderare di aggiornare i sistemi per SHA-256. – TravisO
btw, 'Console.WriteLine ("Hash di {0} è {1}", password, s); ' – abatishchev
Abatishchev, questo è stato un picco veloce per verificare se potevo generare lo stesso hash di PHP per una determinata stringa di input. Il tuo commento è completamente fuori tema e meno che utile. –