Próbuję zrozumieć następujące:Dlaczego funkcja C# Convert.ToBase64String() daje mi 88 jako długość, gdy przechodzę w 64 bajtach?
Jeśli deklaruję 64 bajty jako długość tablicy (bufor). Kiedy konwertuję na łańcuch podstawowy 64, mówi on, że długość wynosi 88. Czy długość nie powinna wynosić tylko 64, ponieważ przechodzę w 64 bajtach? Mogę całkowicie nie rozumieć, jak to działa. Jeśli tak, proszę wyjaśnić.
//Generate a cryptographic random number
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
// Create byte array
byte[] buffer = new byte[64];
// Get random bytes
rng.GetBytes(buffer);
// This line gives me 88 as a result.
// Shouldn't it give me 64 as declared above?
throw new Exception(Convert.ToBase64String(buffer).Length.ToString());
// Return a Base64 string representation of the random number
return Convert.ToBase64String(buffer);
Przy okazji: wyrzucenie wyjątku jest okropnym sposobem na zarejestrowanie prostej wartości ... –
Ja osobiście nie użyłbym szyfrowania RGN, silna kryptograficznie RNG będzie wolniejsza --- wymaga więcej obliczeń --- i będzie spektralnie biały, – MethodMan
Spójrz na to StackOverFlow Wyjaśnienie, dlaczego nie jest bezpiecznie używać RGN http://stackoverflow.com/questions/4892588/rngcryptoserviceprovider-random-number-review – MethodMan