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 есть возможность отправки списка всех используемых символов. Если этот список также изменяется из-за неправильного преобразования набора символов, получатель может распознать это и по-прежнему правильно декодировать файл, пока изменения обратимы .
| значение | персонаж | значение | персонаж | значение | персонаж | значение | персонаж | |||
|---|---|---|---|---|---|---|---|---|---|---|
| 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 , используемая в электронных письмах для передачи двоичных файлов.
веб ссылки
- Онлайн-инструмент UUencode / UUdecode
- Онлайн-инструмент XXencode / XXdecode
- GNU sharutils - программный пакет sharutils от Free Software Foundation содержит uuencode и uudecode.
- UUDeview - программа с открытым исходным кодом для кодирования и декодирования Base64, BinHex для Unix / Windows / DOS