base64
エンコーディングとは何か、C# でエンコーディングを計算する方法は知っていますが、文字列を base64 に変換すると最後にbase64
が付くことが何度かありました。=
いくつかの質問が出てきました:
base64
文字列は常に で終わりますか=
?- なぜ
=
最後に が追加されるのですか?
ベストアンサー1
Q base64 文字列は常に で終わりますか=
?
A: いいえ。(単語はusb
base64でエンコードされますdXNi
)
Q なぜ=
最後に が追加されるのですか?
A: 簡単に答えると、
最後の文字 (記号) は、特別な数の文字=
でメッセージをエンコードする最終プロセスで、補数 (パディング) としてのみ追加されます。
=
文字列に 3 文字の倍数がある場合は符号は付きません。これは、Base64
エンコードでは3バイト (1 文字 = 1 バイト) がそれぞれ取得され、 ASCII 標準の4 つの印刷可能な文字として表されるためです。
例:
(a)エンコードしたい場合
ABCDEFG <=> [ ABC
] [ DEF
] [ G
]
Base64
最初のブロック (4 文字を生成) と 2 番目のブロック (完了) を処理します。ただし、3 番目のブロックについては、==
必要な 4 文字を完了するために、出力に double が追加されます。したがって、結果はQUJD REVG Rw== (スペースなし) になります。
[ ABC
] =>QUJD
[ DEF
] =>REVG
[ G
] =>Rw==
(b) ABCDEFGH <=> [ ABC
] [ DEF
] [ GH
]をエンコードする場合
=
同様に、出力の最後に1 を追加して4 文字を取得します。
結果はQUJD REVG R0g= (スペースなし) になります。
[ ABC
] =>QUJD
[ DEF
] =>REVG
[ GH
] =>R0g=