Авторизация


...

Кто на сайте?

Сейчас 136 гостей и 2 зарегистрированных пользователей на сайте

  • elwhidbynath
  • magierskadal

Статистика

-Посетители : 28029
-Материалы : 210

Пользователь сайта продает...

  106ЛБ1

Пользователь сайта покупает...

Применение Base64-кодирования в МК.

Автор: Николай Викторов Просмотров: 5671

 

 

 

Информации по Base64 в интернете предостаточно, а вот найти что то готового не получилось, по этому и решил написать подпрограмму кодирования и декодирования     Base64 на ассемблере.

 На самом деле    при помощи base64 можно кодировать любые двоичные данные и не только в формате электронной почты (транспортное кодирование), а  в том числе  различные тексты и файлы. Часто используется в веб-приложениях, сокрытие паролей и др..

Для того что бы понять принцип кодирования Base64 рассмотрим рисунок:

 

 alt

 

Для кодирования данных  в base64 берем  первые три байта (буфер 24 бита), первый байт помещаем в самый старший регистр - BaseU, второй в BaseH и последний в BaseL.  Если кодируется менее чем три байта, то соответствующие регистры (BaseH,L) необходимо установить  в ноль.

Как видим из рисунка трех байтовое число ( 8 бит в байте) конвертируется в промежуточное четырех байтовое число (6 бит в байте) с последующим добавлением двух нолей в старшие регистры (выделено красным светом). Максимальное число которое может получиться при таком конвертировании   63, т.к  старшие два бита всегда имею значение "0".  Т.е. всего получается 64 знака, отсюда и название кодировки Base64.

Далее кодируем регистры Base_1-4  согласно таблице соответствия. Используются только символы  латинского алфавита  в верхнем и нижнем регистре, цифры (0-9) и символы «+» и «/» :

«ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/» .

 

 Таблица соответствия в Base64

 

alt

Результат сохраняется в регистрах Base_1-4.

Если  кодируются только один или два байта, то в регистры Base_3-4  дополняются двумя или одним символами «=» (равно).   К примеру:  "Mx==" или "M8x=". 

Максимальная  длина строки в base64, состоящая из 4-х символьных стрингов составляет 72 символа (кроме последней строки ).

Что касается самой программы...

Таблицы соответствия кодирования и декодирования Base64  прошиты в EEPROM по адресам 0300h-034Fh  и   0350h-038Fh В случае применения микроконтроллера с меньшим объемом EEPROM необходимо изменить адресацию в программе.

Encod_base  movlw              0x03 ; расположение base кода в EEPROM 0300h
            movwf            EEADRH ;

====================================

Decod_base  movlw              0x03 ; расположение base кода в EEPROM 0300h
            movwf            EEADRH ;
     

Программа написана для  PIC микроконтроллеров 18 серии.

Проект MPlab на примере МК pic18f46k20  Скачать 

Ссылка для скачивания доступна только авторизованным пользователям сайта !
.

Задать вопрос на форуме...

Случайные статьи....

Prev Next

Инфракрасный счетчик вошедших/вышедших на основе дальномеров.

23-08-2014 Александр Маюнов

Инфракрасный счетчик вошедших/вышедших на основе дальномеров.

  Каждый человек, в своей жизни сталкивался с ситуацией, когда заходит в помещение где выключен свет,начинает искать по стенам выключатель. Характер помещения может быть любым, будь то: офис, комната, гараж, или какое-нибудь техническое помещение- первое, что начинает нащупывать рука-это выключатель.  В...

Преобразование однобайтного двоичного числа в трёхзначное десятичное ч…

23-07-2011 Николай Викторов

Преобразование однобайтного двоичного числа в трёхзначное десятичное число в «пиках» 18 серии

  Была необходимость применить подпрограмму «Преобразование однобайтного двоичного числа в трёхзначное десятичное число» в «пиках» 18 серии. Для этого пришлось подправить код. Дело в том , что команда «incf» в пиках 16 серии увеличивает значение регистра f на 1 и...

Простое объяснение битовых логических операций

17-01-2012 Александр Милевский

Простое объяснение битовых логических операций

Несколько раз сталкивался с необходимостью объяснить стандартные логические битовые операции применительно к командам среднего семейства Microchip. Если человек хочет научиться основам программирования мк, но не сталкивался никогда с электроникой и цифровой техникой, это тяжелый случай.  Эта статья для такой категории...

Подключение ENC28J60 + PIC к локальной сети Часть II.

14-11-2011 Николай Викторов

Подключение ENC28J60 + PIC к локальной сети Часть II.

В этой части рассмотрим отправку пакетов от ENC28J60 и реализацию  протоколов ARP, IP и ICMP(Ping). Надеюсь , что те , кто пока слабо  разбирается в сетевых  протоколах к концу чтения статьи поймут  для чего они нужны . К примеру, вот...


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru