Base64変換ウェブツールの使い方や、項目の説明など。
Contents
既存のデータをBase64で変換するにはBase64 エンコードを使用します。逆に復元するにはBase64 デコードを使用します。
テキストファイルから動画やプログラムなど、どんなデータでも変換できます。ただし、変換アルゴリズムの仕様により変換後のデータは元データよりも約38%容量が増加します。
ここではもっとも単純に、変換と復元を実際にやってみましょう。
ちなみに、JavaScriptが使用できる環境である場合は、入力可能な項目が一目でわかるようになっています。
エンコードとは、元のファイルからBase64へと変換することを指します。
まずデータ入力項目から、変換したい対象のデータを選びます。これは手持ちのファイルを送信してもよいし、テキストデータのようなものであれば直接入力欄に書き込んでもよいです。ここではテストなので、直接入力欄に以下のようなデータを書いたとします。
Base64の変換テスト。
なが~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~い行のテストもやってみちゃおうか。
ごにょごにょごにょ……。
単に変換する場合は他のオプションは一切必要ありません。ということで、このままエンコードを実行します。
すると以下のような文字列が返ってきます。
QmFzZTY044Gu5aSJ5o+b44OG44K544OI44CCDQrjgarjgYzvvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7v vZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7v vZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7jgYTooYzjga7jg4bjgrnjg4jjgoLjgoTjgaPjgabj gb/jgaHjgoPjgYrjgYbjgYvjgIINCuOBlOOBq+OCh+OBlOOBq+OCh+OBlOOBq+OCh+KApuKApuOA gg==
これがBase64に変換されたもので、このようにどのようなデータであってもアルファベットと数字、そしていくつかの記号で構成された安全な文字列になります。
これはファイルを転送して、画像やその他プログラムなど、何を変換しても結果としてこのようなアルファベットの羅列になります。従って、掲示板やそれに類する文字しかやりとりできない環境でも相手に特定のデータを渡すことができます。
デコードとは、エンコードとは逆にBase64に変換されているデータを元の形に戻すことを指します。
デコードするには、まずエンコードと同じようにデータ入力項目から元に戻したいBase64変換済みデータを入力します。ファイルを転送する場合は、Base64でエンコードされているデータのみが書き込まれているテキストファイルを指定してください。ここでは、前項で変換したBase64データを入力してみましょう。
QmFzZTY044Gu5aSJ5o+b44OG44K544OI44CCDQrjgarjgYzvvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7v
vZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7v
vZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7vvZ7jgYTooYzjga7jg4bjgrnjg4jjgoLjgoTjgaPjgabj
gb/jgaHjgoPjgYrjgYbjgYvjgIINCuOBlOOBq+OCh+OBlOOBq+OCh+OBlOOBq+OCh+KApuKApuOA
gg==
エンコードと同様に、単に変換する場合は他のオプションは一切必要ありません。ということで、このままデコードを実行します。
すると以下のように本来のデータが復元されます。
Base64の変換テスト。 なが~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~い行のテストもやってみちゃおうか。 ごにょごにょごにょ……。
エンコーダの必須項目やオプション項目についての詳細を説明します。
データの入力方法を一つ選択します。これは必須項目です。
直接入力欄に変換したいデータを書き込みます。これはテキストなど印字可能なデータのみで構成されているものに限ります。
画像データなどの印字不能データを含むものはファイルを変換する方法を使います。
ローカルストレージに保存されているファイルを変換します。ここにはいかなるファイルであっても指定できます。
テキストファイルはもちろん、動画や音楽なども指定できます。ただし、単純計算でも1KBのデータを変換すると、アルファベット約1380文字に変換されることになるので、よほど小さいものでないと膨大な長さになってしまうでしょう。
このオプションを使うと、変換したデータの前にDataスキームを付加してURI化します。このURIは対応ブラウザであればJavaScriptやCSSに直接使用することができます。
Dataスキームの仕様からMIMEタイプを設定する必要があります。MIMEタイプとはファイルのデータの内容を示す識別子で、ブラウザはデコード結果を識別子のファイルとして処理するでしょう。
よく使われるファイル形式は「データ内容」の項目から選択できますが、それ以外のファイル形式を指定したい場合は、「トップレベルタイプ」と「サブタイプ及びパラメータ」から任意のMIMEタイプを設定できます。
Base64で変換を行う前に、入力されたデータをDeflateで圧縮します。
圧縮率の項目は数字が低いほど低圧縮で高速、高いほど高圧縮で低速になります。
すでに他のアルゴリズムで圧縮されているデータ(ZIP、LHAなどの圧縮ファイルや、JPEGやGIFなどの形式)では逆にファイル容量が大きくなる場合があります。入力データがテキストファイルである場合は、ほとんどの場合において高い効果を示すでしょう。
デコーダの必須項目やオプション項目についての詳細を説明します。
データの入力方法を一つ選択します。これは必須項目です。
入力されたBase64エンコード済みデータは、エンコードされる前ににDeflate圧縮されていることを伝えます。
これを使うことによって、入力されたデータを正しく伸長させ、元に戻すことができます。
元に戻す方法は以下の3つの選択肢から選べますが、特別な理由がない限り自動でよいでしょう。
後述の「サーバ側で伸長」と「クライアント側で伸長」を相手側の事情を見て自動的に切り替えます。
具体的には、HTTPリクエストとしてまず以下のヘッダの存在を調べます。
Accept-Encoding: deflate
このヘッダを送ってきたクライアントに対しては「クライアント側で伸長」、そうでない場合は「サーバ側で伸長」として扱います。
サーバ側でデータを伸長し、その結果をクライアントに送り返します。転送量は、伸長後の本来のファイルサイズ分が転送されます。
結果として通常のファイル転送手段になりますので、HTTPユーザエージェントであればまず間違いなく正しく受信できるはずです。
HTTPレスポンスに以下のヘッダを含めて、Deflate圧縮されたままのデータをクライアントに送り返します。
Content-Encoding: deflate
これに対応したユーザエージェントであれば、このレスポンスを受け取った場合、自身でそのデータを伸長するでしょう。
対応していない場合では、圧縮されたままのデータがダウンロードされたり、壊れた文字列が表示されたりするかもしれません。
復元後のデータの形式を指定します。
Base64でエンコードされたデータを復元しても、そのデータが元々どのようなデータだったのかはこのデコーダは調べません。「どのようなデータだったか」というのは、例えば単なるテキストだったのか、あるいは音楽データや動画データだったのかなど、そのデータの本質です。
これを正しく指定することで、ユーザエージェントはより適切な動作を選択できます。
ユーザエージェントの機能や設定によりますが、例えば画像や文字列を示すMIMEタイプの場合は直接表示したり、音楽や動画を示すMIMEタイプの場合はプレイヤーを起動するといったことを行ってくれるかもしれません。
よく使われるファイル形式は「データ内容」の項目から選択できますが、それ以外のファイル形式を指定したい場合は、「トップレベルタイプ」と「サブタイプ及びパラメータ」から任意のMIMEタイプを設定できます。
このオプションはダウンロードダイアログを表示させることを目的としていますが、ユーザエージェントによっては別の動作をするでしょう。あまり当てになりません。
ファイル名を設定することで、多くのユーザエージェントはそれを保存する際のデフォルトのファイル名として設定します。
このヘッダは、変換結果をどのように扱うかをユーザエージェントに提案します。デコーダは、「ユーザによる操作があるまで表示すべきでない」を意味する「attachment」を指示しますが、これに従うかはユーザエージェントによります。このヘッダを受け取ることでダウンロードダイアログを表示するものもあるでしょう。単に保存する際のデフォルトのファイル名を設定するだけのものもあります。