メインコンテンツまでスキップ

Appendix C. Notes on Implementing base64url Encoding without Padding (パディングなしでbase64urlエンコーディングを実装する際の注記)

本付録では、本仕様で要求されているように、パディングを使用せずにbase64urlエンコーディングを実装する方法について説明します。

base64urlエンコーディングは、RFC 4648 [RFC4648] のセクション5で定義されているbase64エンコーディングの変形で、URLとファイル名セーフな文字セットを使用します。唯一の違いは次のとおりです:

  • '+'の代わりに'-'を使用
  • '/'の代わりに'_'を使用
  • パディング'='文字を省略

パディングを使用せずにbase64urlエンコーディングを実装するには:

  1. 標準のbase64エンコーダーを使用して入力オクテット列をエンコードします
  2. 結果のすべての'+'文字を'-'に置き換えます
  3. 結果のすべての'/'文字を'_'に置き換えます
  4. すべての末尾の'='文字を削除します

base64urlエンコードされた文字列をデコードするには:

  1. 文字列の長さが4の倍数になるように、必要に応じて'='文字を追加します
  2. すべての'-'文字を'+'に置き換えます
  3. すべての'_'文字を'/'に置き換えます
  4. 標準のbase64デコーダーを使用して結果をデコードします

パディングの計算:

入力長 mod 4 == 0の場合、パディングは不要です。 入力長 mod 4 == 2の場合、2つの'='文字を追加します。 入力長 mod 4 == 3の場合、1つの'='文字を追加します。 入力長 mod 4 == 1の場合、入力は不正な形式です。