Jos*_*osh 325 encoding command-line base64 macos
Mac OS X 中是否有一个终端命令可以对文件或标准输入进行 base64 编码?
Ste*_*lly 338
openssl
可以为你做这件事,默认情况下它都安装在 OS X 上;无需安装 darwinports。
$ openssl base64 -in <infile> -out <outfile>
Run Code Online (Sandbox Code Playgroud)
没有-in
选项从标准输入读取
小智 160
可以更简洁地使用openssl:
echo -n 'input' | openssl base64
Run Code Online (Sandbox Code Playgroud)
[ 必须使用 echo -n -> ,否则将进行编码,包括换行符 ]
或者
openssl base64 <ENTER> [type input] <CTRL+D>
Run Code Online (Sandbox Code Playgroud)
小智 75
尝试使用:
base64 -i <in-file> -o <outfile>
Run Code Online (Sandbox Code Playgroud)
默认情况下,它应该在 OS X 上可用。
小智 55
base64
命令在我的 OS X 10.9.4 上默认可用。
您可以使用base64 <<< string
andbase64 -D <<< string
在终端中对字符串进行编码和解码,或者使用base64 -in file
andbase64 -D -in file
对文件进行编码和解码。
ken*_*orb 14
由于 Python 是默认随 OS X 提供的,因此您可以按如下方式使用它:
$ echo FOO | python -m base64
Rk9PCg==
$ echo Rk9PCg== | python -m base64 -d
FOO
Run Code Online (Sandbox Code Playgroud)
或者coreutils
通过Brew ( brew install coreutils
)安装,它将提供base64
命令:
$ echo FOO | base64
Rk9PCg==
$ echo Rk9PCg== | base64 -d
FOO
Run Code Online (Sandbox Code Playgroud)
小智 6
在速度方面,我会使用 openssl,然后是 perl,然后是 uuencode。在可移植性方面,我将使用 uuencode,然后是 Perl,然后是 openssl(如果您关心在尽可能多的其他 UNIX 类股票平台上重用代码)。但要小心,因为并非所有 UNIX 变体都支持 -m 开关(iirc AIX 支持,HP/UX 支持,Solaris 不支持)。
$ 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
Run Code Online (Sandbox Code Playgroud)
按规定使用-m开关UUENCODE file_in.txt每BASE64 RFC1521和(解码时filename_when_uudecoded.txt作为默认的文件名)将其写入filename.b64:
uuencode -m -o filename.b64 file_in.txt filename_when_uudecoded.txt
Run Code Online (Sandbox Code Playgroud)
标准输入示例:
cat file_in.txt | uuencode -m -o filename.b64 filename_when_uudecoded.txt
Run Code Online (Sandbox Code Playgroud)
现在所有的 Mac 都预装了 Python。
在终端运行python
(或ipython)。
编码文件:
base64data = open('myfile.jpg','rb').read().encode('base64')
open('myfile.txt','w').write(base64data)
Run Code Online (Sandbox Code Playgroud)
解码文件:
data = open('myfile.txt').read().decode('base64')
open('myfile.jpg','wb').write(data)
Run Code Online (Sandbox Code Playgroud)
当然,这两个操作都可以转换为 oneliner,但这样可读性更好。
## encode to base64 (on OSX use `-output`)
openssl base64 -in myfile.jpg -output myfile.jpg.b64
## encode to base64 (on Linux use `-out`)
openssl base64 -in myfile.jpg -out myfile.jpg.b64
## decode from base64 (on OSX `-output` should be used)
openssl base64 -d -in myfile.jpg.b64 -output myfile.jpg
## decode from base64 (on Linux `-out` should be used)
openssl base64 -d -in myfile.jpg.b64 -out myfile.jpg
Run Code Online (Sandbox Code Playgroud)
省略-out
/-output... filename
将打印到标准输出。
OSX 和 Ubuntu 中都存在另一个 ootb 实用程序:
## encode to base64
base64 < myfile.jpg > myfile.jpg.b64
## decode from base64 (OSX) (note the uppercase 'D')
base64 -D < myfile.jpg.b64 > myfile.jpg
## decode from base64 (Linux) (note the lowercase 'd')
base64 -d < myfile.jpg.b64 > myfile.jpg
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
418665 次 |
最近记录: |