c# - base64binary - Conversión de matriz de bytes a base64 y viceversa
decode base64 c# (1)
La razón por la que la matriz codificada es más larga en aproximadamente un cuarto es que la codificación base-64 usa solo seis bits de cada byte; esa es su razón de existencia: para codificar datos arbitrarios, posiblemente con ceros y otros caracteres no imprimibles, de una manera adecuada para el intercambio a través de canales ASCII, como el correo electrónico.
La forma en que recuperas tu matriz original es mediante el uso de Convert.FromBase64String
:
byte[] temp_backToBytes = Convert.FromBase64String(temp_inBase64);
Estoy tratando de:
- Generar una matriz de bytes.
- Convertir esa matriz de bytes a base64
- Convertir esa cadena base64 de nuevo a una matriz de bytes.
He probado algunas soluciones, por ejemplo las de esta question .
Por alguna razón, las matrices de bytes iniciales y finales no coinciden. Aquí está el código utilizado:
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);
}
Mis preguntas son:
¿Por qué "originalArray" y "temp_backToBytes" no coinciden? (originalArray tiene una longitud de 32, temp_backToBytes tiene una longitud de 44, pero sus valores también son diferentes)
¿Es posible convertir una y otra vez, y si es así, cómo puedo lograr esto?