Генерация МБ случайных данных в C#

У меня есть алгоритм, который генерирует случайные данные порядка КБ.

byte[] linkBytes = new byte[size * 1024];
var rngCrypto = new System.Security.Cryptography.RNGCryptoServiceProvider();
rngCrypto.GetBytes(linkBytes);
String text128 = Convert.ToBase64String(linkBytes);
String text128Enc = Uri.EscapeDataString(text128);

return text128Enc;

Проблема в том, что мне нужны МБ случайных данных в Base64. В MSDN написано, что EscapeDataString не может превышать 32766 символов прибл. инт размер.

Как я могу этого добиться?


person SanRyu    schedule 09.01.2014    source источник
comment
Вы можете переключиться на безопасный для URL-адресов Base64, который не использует отступы и использует _ и - в качестве специальных символов.   -  person CodesInChaos    schedule 09.01.2014
comment
Да, это тоже работает, но @Guffa здорово помог мне :)   -  person SanRyu    schedule 09.01.2014


Ответы (1)


Поскольку строка в кодировке base64 может содержать только три символа, для которых требуется кодировка URI, вы можете просто заменить эти три:

string text128Enc = text128.Replace("+", "%2b").Replace("/", "%2f").Replace("=", "%3d");

Я проверил это на цепочке base64, созданной из 100 МБ данных, и кодирование этой строки занимает около одной секунды.

person Guffa    schedule 09.01.2014