RUV CalculatorBase64エンコード・デコードhttps://calc.ruvlabs.com/ja/c/base64

Base64エンコード・デコード

テキストとBase64を相互に

結果

詳しい内訳
長さ

これをBase64にすると?

SGVsbG8sIOyViOuFle2VmOyEuOyalA==

初期値で計算した例です。上の値を変えるとご自身の数字になります。

Base64 は表記法であって暗号ではない

Base64 は任意のバイト列を A-Z、a-z、0-9 と二つの記号だけで書き直します。三バイトが六ビットずつ四つに分かれ、それぞれ一文字になるので、出力は入力のおよそ三分の四の長さになります。最後の組が埋まらないときは等号で埋めます。

目的は、文字しか通さない経路でバイナリデータを運ぶことです。メールの添付、ページに直接埋め込む画像、HTTP ヘッダーに置く資格情報などがそれにあたります。途中のシステムが予期しないバイトを壊すのを防ぎます。

マルチバイト文字はまずUTF-8に変換してから符号化します。「日本」の2文字は6バイトなので、Base64では8文字になり、英字6文字と同じ長さです。出力の長さから元の文字数は確かにはわかりません。

符号化を安全対策と取り違えない

Base64 は誰でも即座に元に戻せます。パスワードやトークンを Base64 で保存しても隠したことにはならず、読みにくくなるだけで、ログやバックアップに届いた時点で完全に露出します。秘密にすべき値には暗号化かハッシュが要ります。

生の Base64 を URL に入れると壊れます。標準の文字集合が使うプラスとスラッシュはウェブアドレスでは別の意味を持つので、URL にはその二文字を置き換えた URL 安全版が必要です。

復号に失敗するのは、たいてい長さか埋め文字の問題です。Base64 の文字列の長さは四の倍数でなければならず、写すときに紛れ込んだ改行や空白があると解析器に拒まれます。

よくある質問

Base64は暗号ですか。

違います。これは符号化であって暗号ではありません。誰でも元に戻せるので、何も守りません。目的は、メール・JSON・URLのようにテキストしか通せない経路で、バイナリデータを壊さずに運ぶことです。

サイズが増えるのはなぜですか。

3バイトが4文字になるからで、およそ33%増えます。データを6ビットずつに区切って64種類の文字に割り当てる仕組みだからです。画像をBase64でHTMLに埋め込むとファイルをリンクするより重くなるのはそのためです。

末尾の=は何ですか。

埋め草です。入力の長さが3の倍数でないとき、最後の4文字の組を埋めるために付きます。1バイト余れば2つ、2バイト余れば1つです。

計算はこのブラウザーの中で行われます。結果をそのまま使う前に、入力した値をもう一度確かめてください。