UUencode

UUencode была первой популярной программой, которая сделала возможным преобразование двоичных файлов (изображений или программ, например, для .B ) таким образом, чтобы они состояли только из «печатаемых символов ASCII» и без проблем можно было отправлять их по электронной почте. разрешены только символы ASCII .

сказка

UU означает корни в UNIX . UU в UUencode и -decode, как UU в UUCP, стоит на U NIX к U NIX протокола копирования . То есть перенос с одного компьютера UNIX на другой компьютер UNIX.

Принцип аналогичен методу Base64, который сегодня является распространенным для вложений электронной почты : три байта двоичного файла (= 24 бита) делятся на четыре раза по 6 бит, а печатаемые символы ASCII присваиваются 6-битным значениям. Первые версии UUencode просто использовали символы ASCII со значениями от 32 до 95.

Поскольку символ ASCII со значением 32 является пробелом, и он часто не сохраняется после отправки почты, `вместо него использовался символ ASCII со значением 96 (" ").

Формат файла

UUencode использует специальный формат для закодированного файла:

begin имя файла режима
данные о длине
данные о длине
...
данные о длине
`
end

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

Каждая строка данных начинается со спецификации длины в 1 байт, которая указывает, сколько исходных байтов было закодировано в этой строке. Эта спецификация длины представляет собой число от 1 до 63 и также имеет кодировку uu, то есть как символ от " !" до " _". Обычно 45 байтов (т.е. значение « M») кодируются 60 символами.

Для отображения конца файла всегда должна быть закодирована «пустая строка», которая содержит только байт длины 0 (закодированный « `»). Наконец, есть строка с ключевым словом end.

Метод кодирования

Три байта исходных данных uuencodeкодируются в четыре байта с помощью. Данные находятся в uuencoded файле в младших шести битах байтов, старшие биты устанавливаются кодировкой:

    unkodierter Bitstrom    ↔    kodierter Bitstrom
aaaaaaaa bbbbbbbb cccccccc  ↔  0kaaaaaa 0kaabbbb 0kbbbbcc 0kcccccc


Для кодирования новые группы из шести «00eeeeee» сначала связываются XOR с 32 . Бит k устанавливается, если результат ≤ 32.

uncodiert                      (XOR 32)                   (k setzen?)                        codiert
[0]     = [00000000]              →            [00100000]    -ja→               [01100000] =    [96]
[1,31]  = [00000001,00011111]     →   [00100001,00111111]   -nein→     [00100001,00111111] = [33,63]
[32,63] = [00100000,00111111]     →   [00000000,00011111]    -ja→      [01000000,01011111] = [64,95]

Другими словами: для 0 результат 96, для всех остальных 32 нужно добавить.

Декодирование данных происходит в обратном порядке, четыре байта исходных данных uudecodeдекодируются в три байта. Если в исходных данных установлен бит k, его необходимо удалить. Полученное значение будет затем связано с 32 XOR .

codiert                      (k entfernen)                 (XOR 32)                        uncodiert
[96]    = [01100000]             -ja→            [00100000]   →                [00000000] =      [0]
[33,63] = [00100001,00111111]   -nein→  [00100001,00111111]   →       [00000001,00011111] =   [1,31]
[64,95] = [01000000,01011111]    -ja→   [00000000,00011111]   →       [00100000,00111111] =  [32,63]

Другими словами: для 96 результат равен 0, для всех остальных 32 необходимо вычесть.

    kodierter Bitstrom               ↔     unkodierter Bitstrom
0kaaaaaa 0kaabbbb 0kbbbbcc 0kcccccc  ↔  aaaaaaaa bbbbbbbb cccccccc

пример

Абзац текста сверху служит вводом:

Geschichte
Das UU steht für die Wurzeln in UNIX. Das UU in UUencode und -decode steht
ebenso wie das UU bei UUcp für UNIX to UNIX copy protocol. Also die Übertragung
von einem UNIX-Computer zu einem anderen UNIX-Computer.

UUencoding делает это:

begin 644 uuencode-Test.txt
M1V5S8VAI8VAT90T*#0I$87,@554@<W1E:'0@9OQR(&1I92!7=7)Z96QN(&EN
M(%5.25@N($1A<R!552!I;B!5565N8V]D92!U;F0@+61E8V]D92!S=&5H="`-
M"F5B96YS;R!W:64@9&%S(%55(&)E:2!556-P(&;\<B!53DE8('1O(%5.25@@
M8V]P>2!P<F]T;V-O;"X@06QS;R!D:64@W&)E<G1R86=U;F<@#0IV;VX@96EN
M96T@54Y)6"U#;VUP=71E<B!Z=2!E:6YE;2!A;F1E<F5N(%5.25@M0V]M<'5T
%97(N#0H`
`
end

XXencode

XXencode работает так же, как UUencode, но использует только буквы и цифры, а также два специальных символа плюс (+) и минус (-). Это сделано для минимизации риска того, что некоторые символы в текстовом файле будут непоправимо повреждены автоматическим преобразованием набора символов (например, из ASCII в EBCDIC ) во время передачи.

Кроме того, в некоторых версиях xxencode есть возможность отправки списка всех используемых символов. Если этот список также изменяется из-за неправильного преобразования набора символов, получатель может распознать это и по-прежнему правильно декодировать файл, пока изменения обратимы .

Таблица кодирования XXencode
значение персонаж значение персонаж значение персонаж значение персонаж
0 + 16 E 32 U 48 k
1 - 17-е F 33 V 49 l
2 0 18-е G 34 W 50 m
3 1 19-е H 35 год X 51 n
4-й 2 20-е I 36 Y 52 o
5 3 21-е J 37 Z 53 p
Шестой 4 22-е K 38 a 54 q
7-е 5 23 L 39 b 55 r
8-е 6 24 M 40 c 56 s
9 7 25-е N 41 год d 57 t
10 8 26-е O 42 e 58 u
11 9 27 P 43 год f 59 v
12 A 28 Q 44 g 60 w
13 B 29 R 45 h 61 x
14-е C 30-е S 46 i 62 y
15-е D 31 год T 47 j 63 z

похожие темы

  • 7plus - более эффективный и надежный метод кодирования, используемый в любительском радио
  • Kermit - протокол, который также отображает двоичные символы в символы ASCII.
  • Base64 - кодировка MIME , используемая в электронных письмах для передачи двоичных файлов.

веб ссылки