Je suis en train de réécrire un site web PHP dans ASP.NET MVC. Je voudrais maintenir la même base d'utilisateurs mais les mots de passe sont hachés en utilisant la fonction PHP crypt(). J'ai besoin de la même fonction dans .Net afin que je puisse hacher un mot de passe lors de la connexion et le vérifier par rapport au mot de passe haché dans la base de données utilisateur.Fonction PHP crypt() dans .Net?
crypte dans ce cas, utilise la mise en œuvre CRYPT_MD5 - les hash commencent tous par 1
$$ J'ai essayé Phalanger mais il ne dispose pas d'implémentation de MD5 de la fonction crypte.
Quelqu'un en connaît-il un dans .Net? L'exemple C# de crypt() sur CodeProject utilise DES, pas MD5.
J'ai essayé le code suivant en C#, avec différentes permutations de sel + mot de passe, mot de passe + sel et sel avec et sans préfixe $ 1 $ et $ suffixe. Aucun donne même résultat que 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 est pas considéré comme un hachage sécurisé et vous pouvez mettre à jour vos systèmes SHA-256 – TravisO
btw, 'Console.WriteLine ("Hash de {0} est {1}", mot de passe, s); ' – abatishchev
Abatishchev, ce fut un pic rapide pour vérifier si je pouvais générer le même hachage que PHP pour une chaîne d'entrée donnée. Votre commentaire est complètement hors sujet et moins qu'utile. –