Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Base64 Tool 2.0

30.03.2024 | Категория: Мои программы | Автор: ManHunter

Скриншот программы Base64 Tool

Программа для кодирования файлов по алгоритму Base64 с дополнительными возможностями. Режимы конвертирования:
RAW - простое кодирование содержимого файла по алгоритму Base64;
IMG - конвертирование изображения по схеме data:URI для последующей вставки тега в html-страницу. Если невозможно обработать файл как изображение, то применяется простое кодирование;
CSS - конвертирование изображения по схеме data:URI для последующей вставки записи в таблицу стилей. Если невозможно обработать файл как изображение, то применяется простое кодирование;
MIME - конвертирование файла в MIME-файл, который затем можно привести в исходный вид при помощи Total Commander, или, например, разместить на форуме.

Программа написана для личных нужд в качестве альтернативы онлайн-сервисам, буду рад, если она пригодится кому-нибудь еще.

Читать статью целиком »
Просмотров: 1252 | Комментариев: 8

Функции base64 на JavaScript

23.06.2011 | Категория: Web-мастеру и не только | Автор: ManHunter
По умолчанию в JavaScript отсутствуют штатные функции преобразования данных по алгоритму Base64. Ниже приведены две функции для base64-кодирования и декодирования на JavaScript. Их удобно использовать при передаче различных данных через AJAX или через web-формы, а также для хранения в исходном коде бинарных данных, например, зашифрованных строк.
  1. // Функция кодирования строки в base64
  2. function base64encode(str) {
  3.     // Символы для base64-преобразования
  4.     var b64chars 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg'+
  5.                    'hijklmnopqrstuvwxyz0123456789+/=';
  6.     var b64encoded '';
  7.     var chr1chr2chr3;
  8.     var enc1enc2enc3enc4;
  9.  
  10.     for (var i=0i<str.length;) {
  11.         chr1 str.charCodeAt(i++);
  12.         chr2 str.charCodeAt(i++);
  13.         chr3 str.charCodeAt(i++);
  14.  
  15.         enc1 chr1 >> 2;
  16.         enc2 = ((chr1 3) << 4) | (chr2 >> 4);
  17.  
  18.         enc3 isNaN(chr2) ? 64:(((chr2 15) << 2) | (chr3 >> 6));
  19.         enc4 isNaN(chr3) ? 64:(chr3 63);
  20.  
  21.         b64encoded += b64chars.charAt(enc1) + b64chars.charAt(enc2) +
  22.                       b64chars.charAt(enc3) + b64chars.charAt(enc4);
  23.     }
  24.     return b64encoded;
  25. }
Функция декодирования, соответственно, выполняет обратное действие. Дополнительно в ней перед декодированием выполняется очистка исходной строки от символов, которые не относятся к base64-символам. Поэтому функции base64decode можно передавать не цельную строку, а, например, разделенную переносами строк или пробелами для удобства восприятия.

Читать статью целиком »
Просмотров: 16198 | Комментариев: 14

Функции base64 на Ассемблере

09.01.2009 | Категория: Образ мышления: Assembler | Автор: ManHunter
Алгоритм Base64 может использоваться в пользовательских почтовых приложениях, в качестве одного из уровней защиты шифрованием, для хранения двоичных данных и для решения многих других задачах. В большинстве языков высокого уровня используются штатные функции, в Ассемблере приходится все реализовывать самостоятельно.

Алгоритм Base64 обратимый, то есть из закодированного текста можно в точности получить исходные данные. Начнем с функции кодирования.
  1. ;---------------------------------------------------------------
  2. ; Функция кодирования Base64
  3. ;---------------------------------------------------------------
  4. ; Параметры:
  5. ; lpFrom - указатель на исходные данные
  6. ; lpTo   - указатель на буфер для приема кодированных данных
  7. ; dSize  - размер исходных данных
  8. ; Функция ничего не возвращает
  9. ;---------------------------------------------------------------
  10. proc    base64_encode lpFrom:dword, lpTo:dword, dSize:dword
  11.         pusha
  12.  
  13.         mov     ebx,.base64
  14.         mov     esi,[lpFrom]
  15.         mov     edi,[lpTo]
  16.         mov     ecx,[dSize]
  17.  
  18.         or      ecx,ecx
  19.         jz      .r3
  20. .encode_loop:
  21.         lodsd
  22.         mov     edx,eax
  23.         bswap   edx
  24.         xor     eax,eax
  25.  
  26.         shld    eax,edx,6
  27.         shl     edx,6
  28.         xlatb
  29.         stosb
  30.  
  31.         xor     eax,eax
  32.         shld    eax,edx,6
  33.         shl     edx,6
  34.         xlatb
  35.         stosb
  36.         dec     ecx
  37.         jz      .r2
  38.  
  39.         xor     eax,eax
  40.         shld    eax,edx,6
  41.         shl     edx,6
  42.         xlatb
  43.         stosb
  44.         dec     ecx
  45.         jz      .r1
  46.  
  47.         xor     eax,eax
  48.         shld    eax,edx,6
  49.         shl     edx,6
  50.         xlatb
  51.         stosb
  52.  
  53.         dec     esi
  54.         dec     ecx
  55.         jnz     .encode_loop
  56.  
  57.         jmp     .r3
  58. .r2:
  59.         mov     al,'='
  60.         stosb
  61. .r1:
  62.         mov     al,'='
  63.         stosb
  64. .r3:
  65.         xor     eax,eax
  66.         stosb
  67.         popa
  68.  
  69.         ret
  70.  
  71. .base64 db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  72.         db 'abcdefghijklmnopqrstuvwxyz'
  73.         db '0123456789+/'
  74. endp
Параметры вызова: lpFrom - указатель на кодируемые данные, lpTo - указатель на буфер для приема кодированных данных и dSize - размер кодируемых данных. Все параметры обязательные. Размер буфера-приемника должен быть примерно в 1,3 раза больше исходных данных, это обусловлено особенностями алгоритма кодирования.

Читать статью целиком »
Просмотров: 5765 | Комментариев: 9

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.06 сек. / MySQL: 3 (0.0027 сек.) / Память: 4.5 Mb
Наверх