| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > BASE 64 |
| Автор: saider84 30.4.2008, 14:47 |
| Подскажите пожалуйста. Есть ли функция, которая определяет закодирована ли строка в BASE 64. Или может кто сам писал подобную функцию. |
| Автор: Snowy 30.4.2008, 16:05 |
| А функция простая - попробовать декодировать. Получилось - да. Не получилось - нет... |
| Автор: mmvds 30.4.2008, 22:33 | ||||||
| Snowy, не все так просто. Если строка содержит любые другие символы кроме:
То она точно не Base 64, вот обратное сказать нельзя :( Т.к. Base64 спокойно декодирует любую строку, содержащую вышеперечисленные символы, даже если та не была получена с помошью Base 64. Пример: Возьмем строчку
Она свободно декодируется Base64, получаем
Т.е. если у нас была строчка vingradforum то про нее мы не можем однозначно сказать, Base64 это или строчка написанная от балды. |
| Автор: saider84 3.5.2008, 10:13 |
| mmvds, а если исходный текст это файл, как поступить в такой ситуации. Сейчас пользуюсь indy`ской функцией декодирования, отсекаю некодированные файлы по признакам кратности длины. Может будут еще какие-нить предложения? |
| Автор: mmvds 3.5.2008, 12:32 | ||
Проверить весь файл, если в нем присутствует любой символ, не входящий в алфавит Base64
то это не Base64. Если известен хотябы тип файла, проверять декодированный файл на соответствие формату данного типа. Также если исходный файл-текстовый и известно, на каком он языке и в какой кодировке, и необходимо отфильтровывать большое кол-во файлов, то можно применить частотный метод (частота встречаемости символов) чтоб проверять декодированный файл. На практике как мне кажется должно хватить отсечения по алфавиту, если это обычный файл, вероятность появления хотябы 1 символа не из алфавита очень большая. |