94 votes

Conversion d'un tableau d'octets de hachage md5 en chaîne

Comment puis-je convertir le résultat haché, qui est un tableau d'octets, en chaîne?

 byte[] bytePassword = Encoding.UTF8.GetBytes(password);

using (MD5 md5 = MD5.Create())
{
    byte[] byteHashedPassword = md5.ComputeHash(bytePassword);
} 
 

J'ai besoin de convertir byteHashedPassword en chaîne.

91voto

Philippe Leybaert Points 62715
    public static string ToHex(this byte[] bytes, bool upperCase)
    {
        StringBuilder result = new StringBuilder(bytes.Length*2);

        for (int i = 0; i < bytes.Length; i++)
            result.Append(bytes[i].ToString(upperCase ? "X2" : "x2"));

        return result.ToString();
    }
 

Vous pouvez ensuite l'appeler comme méthode d'extension:

 string hexString = byteArray.ToHex(false);
 

70voto

GrayWizardx Points 6812

J'ai toujours trouvé que c'était le plus pratique:

 string hashPassword = BitConverter.ToString(byteHashedPassword).Replace("-","");
 

Pour une raison étrange, BitConverter aime mettre des tirets entre octets, aussi le remplacement les supprime-t-il.

Mise à jour: Si vous préférez un hexagone "minuscule", faites un .ToLower () et un boom.

Notez que si vous faites cela comme une boucle serrée et de nombreuses opérations, cela pourrait être coûteux car il y a au moins deux conversions et redimensionnements de chaîne implicites en cours.

31voto

David Points 20209

Vous pouvez utiliser Convert.ToBase64String et Convert.FromBase64String pour convertir facilement des tableaux d'octets en chaînes.

24voto

Simon_Weaver Points 31141

Si vous êtes dans le camp "Préférences Hex", vous pouvez le faire. Il s’agit d’une version minimale de la réponse de Philippe Leybaert.

 string.Concat(hash.Select(x => x.ToString("X2")))
 

B1DB2CC0BAEE67EA47CFAEDBF2D747DF

10voto

AxelEckenberger Points 9546

Comme il s’agit d’un hachage, il a éventuellement des valeurs qui ne peuvent pas être affichées dans une chaîne normale, le mieux est donc de le convertir en chaîne encodée en Base64.

 string s = Convert.ToBase64String(bytes);
 

et utilise

 byte[] bytes = Convert.FromBase64(s);
 

pour récupérer les octets.

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