Base64エンコードを図で理解する

Practical Malware AnalysisのChapter 13に載っていたBase64エンコードの図が視覚的にわかりやすかったので、引用してみました。

Base64エンコード手順の概要 (Wikiより抜粋)

1. 元データを6ビットずつに分割。(6ビットに満たない分は0を追加して6ビットにする)
2. 各6ビットの値を変換表を使って4文字ずつ変換。(4文字に満たない分は = 記号を追加して4文字にする)

以下は"ATT"という文字列をBase64エンコードしたときの流れを表したものです。
base64_figure.png

1行目: エンコード前の平文

2行目: 平文をHEXエンコードして4ビットずつに分けたもの
>>> binascii.hexlify('A')
'41'
0x41 -> 0x4, 0x1

3行目: 2行目をビットで表したもの
>>> format(4, '04b')
'0100'
>>> format(1, '04b')
'0001'

4行目: 3行目のビット列を6ビットずつに分けて10進数で表したもの
>>> int('010000', 2)
16

5行目: 4行目の値をインデックス番号としてBase64変換表をもとに変換された文字
>>> b64_table ='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
>>> b64_table[16]
'Q'

以上。

Leave a Reply

Your email address will not be published. Required fields are marked *