Cryptography Reference
In-Depth Information
D.6 Radix-64 Encoding
As we saw on pages 277 and 288, both PGP and S/MIME use radix-64
encoding techniques in their execution. Radix-64 is a data encoding scheme (see
page 433), consisting of base-64 encoded data with a 24-bit cyclic redundancy
check (CRC) appended to it, as specified in RFC2440 (see [213]), and see the
discussion on page 549. This is necessary to accommodate restrictions in many
email systems that only permit the use of blocks consisting of ASCII text. In
essence, the radix-64 conversion, also called ASCII armor , may be viewed as
a wrapper put on the binary message for transmission over nonbinary email
channels.
Table D.1 presents the character set of 65 printable characters, one of which,
the = sign, is used for padding. However, in order for radix-64 encoded data
to travel through mail-handling systems, there are no control characters for
such systems to detect when scanned, which results in a text file that is secure
against alterations made by email systems. Since one character is used for
padding, there are 2 6 = 64 characters to be employed for representation, so
that each character may be used to represent 6 bits of input data. In fact, this
is from where “radix-64” is derived since a six-bit number has 64 combinations.
We represent the 6-bit input data in their decimal value form for convenience in
the table, while the character encodings are represented by upper- and lower-
case English alphabet letters, together with the integers 0 through 9, and the
symbols +, /, and lastly = for padding.
Radix-64Conversion
Table D.1
6 -bit Input
0
1
2
3
4
5
6
7
8
9
10
Encoding
A B C D E F G H
I
J
K
6 -bit Input 11 12 13 14 15 16 17 18 19
20
21
Encoding
L M N O P Q R
S
T
U
V
6 -bit Input 22 23 24 25 26 27 28 29 30
31
32
Encoding
W X Y Z
a
b
c
d
e
f
g
6 -bit Input 33 34 35 36 37 38 39 40 41
42
43
Encoding
h
i
j
k
l
m n
o
p
q
r
6 -bit Input 44 45 46 47 48 49 50 51 52
53
54
Encoding
s
t
u
v
w
x
y
z
0
1
2
6 -bit Input 55 56 57 58 59 60 61 62 63 PAD
Encoding
3
4
5
6
7
8
9
+
/
=
The radix-64 encoding is a mapping denoted by f 64 acting on 6-bit inputs
that are grouped into blocks that are mapped to 32-bit blocks. Each of the
four 6-bit input values is mapped to an 8-bit character. In essence, this means
that three bytes are mapped to four printable characters. This is illustrated in
Diagram D.1.
Search WWH ::




Custom Search