openssl
はあなたのためにこれを行うことができ、デフォルトでOS Xにすべてインストールされています。
使用してみてください:
base64 -i <in-file> -o <outfile>
OS Xではデフォルトで使用できるはずです。
OS XにはPythonがデフォルトで搭載されているので、以下のように使用することができます。
$ echo FOO | python -m base64
Rk9PCg==
$ echo Rk9PCg== | python -m base64 -d
FOO
または、coreutils
コマンドを提供する Brew (brew install coreutils
) を介して base64
をインストールします:
$ echo FOO | base64
Rk9PCg==
$ echo Rk9PCg== | base64 -d
FOO
速度の面では、openssl、Perl、uuencodeの順に使います。移植性の観点からは、uuencodeの後にPerl、そしてopensslを使うと思います(ストックプラットフォームのような他のUNIXで可能な限り多くのコードを再利用したいのであれば)。ただし、すべてのUNIXが-mスイッチをサポートしているわけではないので注意してください(AIXはサポートしていますが、HP/UXはサポートしていますが、Solarisはサポートしていません)。 txt を RFC1521 で指定されたように base64 ごとに uuencode し、それを filename.b64 (デコード時のデフォルトのファイル名として filenamewhenuudecoded.txt を指定して) に書き込んでください:
$ time perl -MMIME::Base64 -e 'undef $/;while(<>){print encode_base64($_);}' \
> out.jpg 1>filename.b64
real 0m0.025s
$ time uuencode -m -o filename.b64 out.jpg filename_when_uudecoded.txt
real 0m0.051s
$ time openssl base64 -in out.jpg -out filename.b64
real 0m0.017s
STDIN の例:
uuencode -m -o filename.b64 file_in.txt filename_when_uudecoded.txt
Python はプリインストールされています。
Terminal で python
(または ipython ) を実行してください。
base64data = open('myfile.jpg','rb').read().encode('base64')
open('myfile.txt','w').write(base64data)
data = open('myfile.txt').read().decode('base64')
open('myfile.jpg','wb').write(data)
-out
/007を省略するとstdoutに出力されます。
なぜか、echo -n <data> | openssl base64
は私のbase64データの途中に改行を追加してしまいました。
echo -n <data> | base64
を使ってエンコード、デコードしても問題ありませんでした。
001
ここで name はエンコードされたヘッダに表示される名前です。
Perl plus MIME::Base64:
perl -MMIME::Base64 -e 'undef $/;while(<>){print encode_base64($_);}'
これはプリインストールされています。コマンドラインで個別のファイルを指定することができます (あるいは標準入力でデータを提供することもできます)。また、次のようにすることもできます:
perl -i.txt -MMIME::Base64 -e 'undef $/;while(<>){print encode_base64($_);}' file1
これは file1 を file1.txt にバックアップし、Base64 エンコードされた出力を元のファイルの上に書き出します。
フォントファイルをbase64エンコードしている場合は、次のようにします:
base64 my-webfont.ttf > my-webfont.b64.ttf.txt
私はMac(10.10)でいつもこれを使っています。改行はしません。
ファイルを base64 としてエンコードするためのクロスプラットフォームのシェルコマンドのリストをコンパイルしました。以下のコマンドは入力ファイル (例では deploy.key
という名前) を受け取り、改行なしで base64 に変換します。これらのコマンドは、今回の pull request の一部としてプロトタイプを作成しました。