Base 64符号化と復号化の詳細


Base 64は、64個の印刷可能文字A-Z、a-z、0-9、+、/に基づいてバイナリデータを表す表現方法であり、ネットワークにおけるデータの伝送によく用いられる.本稿では,その符号化,復号化および実用化について述べる.

Base 64符号化


Base 64は本質的にバイナリをテキストに変換するスキームである.基本ルールは次のとおりです.
  • 符号化時に64(英字、数字、+/)文字を選択し、補正=として
  • を表す.
  • 符号化の際、3バイトを4バイトに変更し、4バイトの上位2桁はいずれも00で埋め、下位6桁は64文字を表す.

  • 実際の例「YOU」を例にとると、その符号化プロセスは以下の通りである.
    上の表から分かるように、「YOU」に対応するBase 64は、「WU 9 V」と符号化されている.
    符号化する文字数について3の倍数でない場合は0で埋め、符号化後は=番号で表され、例えば「ME」は以下のように符号化される.

    Base 64デコード


    4バイトを3バイトに変更します.
  • 24 bitを16ビット左にシフト255と操作し、最初の文字、
  • を得る.
  • 24 bitを8ビット左にシフト255と操作し、2番目の文字、
  • を得る.
  • 24 bitと255を操作し、3番目の文字
  • を取得する.

    Base 64実装と運用シーン


    ノードにはBufferモジュールが用意されており、Base 64とバイナリまたは文字の変換が可能であり、そのコードは以下の通りである.
    const buf2 = Buffer.alloc(2);
    buf2.write("M", 0);
    buf2.write("E", 1);
    buf2.toString("base64"); //TUU=
    // base64  
    const decodeBase64 = new Buffer("TUU=", "base64").toString(); //ME 

    Base 64は、次のように広く使用されています.
  • は、バイナリ伝送をサポートしないシーンに対して、バイナリデータをBase 64に符号化してサーバ
  • に伝送する.
  • Base 64符号化ピクチャ
  • MIME、電子メールシステムにおいてBase 64符号化を用いる
  • を伝送する.

    参考資料


    [1]Base 64の原理、実現及び応用
    [2]Base 64はどのように行われているか