Quelqu'un peut-il me dire pourquoi le code suivant lève une exception par intermittence? Je courais Vista Ultimate 32 bits et VS2010 .NET4lors de l'utilisation de System.Text.UnicodeEncoding.Unicode.GetString (byte []) l'encodage inverse au tableau d'octets échoue par intermittence
byte[] saltBytes = new byte[32];
RNGCryptoServiceProvider.Create().GetBytes(saltBytes);
string salt = System.Text.UnicodeEncoding.Unicode.GetString(saltBytes);
byte[] saltBytes2 = System.Text.UnicodeEncoding.Unicode.GetBytes(salt);
int i = 0;
foreach(byte b in saltBytes)
{
if (saltBytes[i] != saltBytes2[i])
{
throw new Exception();
}
i++;
}
Je ne savais pas que certaines séquences d'octets sont illégales. J'utilisais le codage unicode pour convertir les octets de sel en une chaîne dans mon propre composant de hachage de mot de passe. Je vais utiliser l'encodage base64 à la place. Merci –