126 votes

Chaîne de hachage en c#

J'ai un problème lorsque j'essaie d'obtenir une chaîne de hachage dans c# .

J'ai déjà essayé quelques sites web, mais la plupart d'entre eux utilisent des fichiers pour obtenir le hash. D'autres, qui utilisent des chaînes de caractères, sont un peu trop complexes. J'ai trouvé des exemples d'authentification Windows pour le web comme celui-ci :

FormsAuthentication.HashPasswordForStoringInConfigFile(tbxPassword.Text.Trim(), "md5")

J'ai besoin d'utiliser un hachage pour sécuriser une chaîne contenant un nom de fichier. Comment faire ?

Ejemplo:

string file  = "username";
string hash = ??????(username); 

Dois-je utiliser un autre algorithme de hachage que "md5" ?

3voto

Erçin Dedeoğlu Points 184

Le chemin le plus court et le plus rapide qui soit. Une seule ligne !

    public static string StringSha256Hash(string text) =>
        string.IsNullOrEmpty(text) ? string.Empty : BitConverter.ToString(new System.Security.Cryptography.SHA256Managed().ComputeHash(System.Text.Encoding.UTF8.GetBytes(text))).Replace("-", string.Empty);

1voto

Babak Points 121

Si la performance n'est pas une préoccupation majeure, vous pouvez également utiliser l'une ou l'autre de ces méthodes :
(Si vous souhaitez que la chaîne de hachage soit en majuscules, remplacez "x2" con "X2" .)

public static string SHA256ToString(string s) 
{
    using (var alg = SHA256.Create())
        return string.Join(null, alg.ComputeHash(Encoding.UTF8.GetBytes(s)).Select(x => x.ToString("x2")));
}

ou :

public static string SHA256ToString(string s)
{            
    using (var alg = SHA256.Create())
        return alg.ComputeHash(Encoding.UTF8.GetBytes(s)).Aggregate(new StringBuilder(), (sb, x) => sb.Append(x.ToString("x2"))).ToString();
}

0voto

Soufiane Neffar Points 34
//Secure & Encrypte Data
    public static string HashSHA1(string value)
    {
        var sha1 = SHA1.Create();
        var inputBytes = Encoding.ASCII.GetBytes(value);
        var hash = sha1.ComputeHash(inputBytes);
        var sb = new StringBuilder();
        for (var i = 0; i < hash.Length; i++)
        {
            sb.Append(hash[i].ToString("X2"));
        }
        return sb.ToString();
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X