J'essaie de:
J'ai essayé quelques solutions, par exemple celles de ce question .
Pour une raison quelconque, les tableaux d'octets initial et final ne correspondent pas. Voici le code utilisé:
using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
{
byte[] originalArray = new byte[32];
rng.GetBytes(key);
string temp_inBase64 = Convert.ToBase64String(originalArray);
byte[] temp_backToBytes = Encoding.UTF8.GetBytes(temp_inBase64);
}
Mes questions sont:
Pourquoi "originalArray" et "temp_backToBytes" ne correspondent-ils pas? (originalArray a une longueur de 32, temp_backToBytes a une longueur de 44, mais leurs valeurs sont également différentes)
Est-il possible de convertir dans les deux sens, et si oui, comment puis-je y parvenir?
La raison pour laquelle le tableau codé est plus long d'environ un quart est que le codage en base 64 n'utilise que six bits sur chaque octet; c'est sa raison d'être - pour coder des données arbitraires, éventuellement avec des zéros et d'autres caractères non imprimables, d'une manière adaptée à l'échange via des canaux ASCII uniquement, tels que le courrier électronique.
La façon dont vous récupérez votre tableau d'origine est en utilisant Convert.FromBase64String
:
byte[] temp_backToBytes = Convert.FromBase64String(temp_inBase64);