#base64
Вопрос:
Мое приложение имеет дело с файлами, которые по причинам устаревания могут быть или не быть закодированы в base64. Если файл НЕ был закодирован в base64, то это двоичный файл, содержащий все 256 возможных байтов, распределенных равномерно.
Поскольку файлы могут быть большими, я хотел бы иметь возможность определить, закодированы ли они в base64, не читая весь файл и фактически не выполняя декодирование.
Вопрос: Правильно ли, что вы не можете определить по подстроке, что вся строка закодирована в base64, вам нужно иметь всю строку, чтобы быть уверенным?
Тем не менее, я подумал, что если я выберу N байтов из начала файла для достаточно большого числа N, и все они будут находиться в алфавите base64, то маловероятно, что файл представляет собой что-то другое, поскольку произвольный двоичный файл может содержать любой байт в любой позиции, только 25% из которых будут символами base64, и поэтому байт, отличный от base64, появится довольно скоро.
Насколько высоким должен быть N, чтобы быть очень, очень уверенным в том, что файл со всеми байтами, совместимыми с base64, действительно является файлом в кодировке base 64?