業務でbase64エンコードを扱うことがありました。
詳しくなかったので調べてみると、base64エンコードと、base64URLエンコードがあることを知りました。
今回は両者の違いと、そもそものbase64とは何か?ついて調べ、結果を簡単にまとめました。
間違いがあれば指摘ください。
base64とは?
- 64種類の文字列を用いたデータ表現形式の総称
- バイバリデータ(画像や音声等)を直接テキスト環境に載せると安全に送信できずデータが壊れる可能性あり
- base64にすると、英数字+限られた記号のみで表現できるため、文字列として安全に変換することが可能
base64エンコードとは?
- バイナリデータを64種の安全な文字列に変換するエンコード方式
目的
- バイナリをテキスト環境において安全に扱う
特徴
- a–z, A-Z, 0-9, +, /
- パディングには「=」を使用
用途
- 電子メール(MIME)
- バイナリデータの文字列表現
base64URLエンコードとは?
- base64エンコードを、URLやWeb上に安全化した方式
目的
- URLを安全に使用
- base64では+や/に変換されるが、URLでは別の意味を持ってしまう
- このため、+,/を別の文字列へ変換して安全に制御
- 不要文字列を省略可に
- URLやJWTでは、末尾の=(イコール)が邪魔になりやすい
- 省略可能にしてトークンを短くすることが可能