Mac OS X에 파일 또는 stdin을 base64로 인코딩하는 터미널 명령이 있습니까?
openssl디코딩 플래그 와 함께 사용되는 경우 -dOS X (10.10 Yosemite)에 있습니다.
Mac OS X에 파일 또는 stdin을 base64로 인코딩하는 터미널 명령이 있습니까?
openssl디코딩 플래그 와 함께 사용되는 경우 -dOS X (10.10 Yosemite)에 있습니다.
답변:
openssl이 작업을 수행 할 수 있으며 기본적으로 OS X와 함께 설치됩니다. darwinports를 설치할 필요가 없습니다.
$ openssl base64 -in <infile> -out <outfile>
-in옵션이 없으면 stdin에서 읽습니다.
openssl base64 < path/to/file.png | tr -d '\n' | pbcopy또는 cat path/to/file.png | openssl base64 | tr -d '\n' | pbcopy을 사용 하여 파일 쓰기를 건너 뛰고 줄 바꿈없이 base64로 인코딩 된 출력을 클립 보드로 복사하십시오.
-d플래그를 사용 하여 디코딩하십시오.
openssl base64 -e <<< ram디코딩 하려면 다음 과 같이하십시오.openssl base64 -d <<< cmFtCg==
openssl base64 [-e] -A는 줄 바꿈을 원하지 않으면 그렇게합니다. + 입력 난 그냥 명시된없는 줄 바꿈 경우를 포함한 대부분의 줄 바꿈마다 76 개 문자를 가지고 있지 않은 경우 디코딩에 @kenny, 당신이 필요 -d -A하거나 데이터가 없거나 손상된 얻을 것이다 오류 메시지를 보류 버그보고가 있지만 (이 수정 될 수 있습니다).
openssl base64 -e <<< ram실제로 후행 줄 바꿈을 포함하여 4 바이트를 인코딩합니다. 참조하십시오 hexdump <<< ram.
Openssl은 간결하게 사용할 수 있습니다.
echo -n 'input' | openssl base64
[echo -n->을 사용해야합니다. 그렇지 않으면 개행 문자를 포함하여 인코딩이 수행됩니다.]
또는
openssl base64 <ENTER> [type input] <CTRL+D>
openssl base64 <<< input
base64없이 사용하십시오 openssl. 어느 쪽이든 Ctrl + D를 두 번 눌러야합니다. 또는하지 않고, 배쉬에서 : 그리고, @Garret 조심 openssl, openssl base64 <<< superuser그리고 openssl base64 <<< "superuser" 잘못 산출 c3VwZXJ1c2VyCg==은 "여기에 문자열"후 여전히 줄 바꿈이 포함로! ( 분명히 Bash뿐만 아니라 zsh, ksh 및 yash에서도 참조하십시오 hexdump <<< superuser. Base64 결과는이어야합니다 c3VwZXJ1c2Vy.)
echo -n줄 바꿈이 필요하지 않은 경우 선호됩니다. 확실히 알아야 할 사항입니다.
printfecho -n
다음을 사용하십시오.
base64 -i <in-file> -o <outfile>
OS X에서 기본적으로 사용 가능해야합니다.
--decode프로세스를 base64에서 normal로 되돌리려면 추가하십시오 .
openssl base64. 감사!
base64 OS X 10.9.4에서 기본적으로 명령을 사용할 수 있습니다.
당신은 사용할 수 있습니다 base64 <<< string및 base64 -D <<< string인코딩 터미널에서 문자열을 디코딩하거나 base64 -in file및 base64 -D -in file인코딩 파일을 디코딩 할 수 있습니다.
Invalid characer in input stream사용할 때 <<<... 내가 함께 시도하지 않은 ", '그리고 문자열 주위에 아무것도.
속도면에서 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
에 의해 지정된 64 기수 당 file_in.txt uuencode로 인코딩하는 -m 스위치를 사용 RFC1521 과 (디코딩 할 때 기본 파일 이름으로 filename_when_uudecoded.txt로)가 filename.b64에 쓸 수 :
uuencode -m -o filename.b64 file_in.txt filename_when_uudecoded.txt
STDIN 예 :
cat file_in.txt | uuencode -m -o filename.b64 filename_when_uudecoded.txt
파이썬은 오늘날 모든 맥에 사전 설치되어 있습니다.
터미널 실행에서 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)
물론 두 작업을 모두 하나의 라이너로 변환 할 수 있지만 더 읽기 쉽습니다.
## 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
-out/ -output... filename를 생략하면 표준 출력으로 인쇄됩니다.
또 다른 ootb 유틸리티는 OSX와 Ubuntu에 있습니다 :
## 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
uuencode -m [-o output_file] [file] name
여기서 name 은 인코딩 된 헤더에 표시 할 이름입니다.
예:
cat docbook-xsl.css | uuencode -m docbook-xsl.css
또는
uuencode -m -o docbook-xsl.css.b64 docbook-xsl.css docbook-xsl.css
uuencode부호화뿐만 아니다base64
어떤 이유로 echo -n <data> | openssl base64base64 데이터 중간에 줄 바꿈을 추가했습니다. 내 base64 데이터가 실제로 길었기 때문이라고 생각합니다.
사용 echo -n <data> | base64인코딩 및 echo -n <base64-ed data> | base64 -D가공 한 벌금을 디코딩 할 수 있습니다.
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로 백업되고 원본 파일 위에 Base-64로 인코딩 된 출력이 기록됩니다.
간단한 NodeJS 버전 :
node -e "process.stdout.write(new Buffer(process.argv[1]).toString('base64'))" "Hello world!"
openssl(그리고 지금 base64) 더 나은 대답이라고 생각하지 않습니다 .
파일을 base64로 인코딩하기 위해 크로스 플랫폼 셸 명령 목록을 컴파일했습니다. 다음 명령은 입력 파일 ( deploy.key예제에서 이름 지정) 을 가져와 줄 바꿈없이 base64로 변환합니다. base64 출력은 stdout을 통해 터미널에 인쇄됩니다.
# For systems with openssl
openssl base64 -A -in=deploy.key
# For systems with Python (2 or 3) installed
python -c "import base64; print(base64.standard_b64encode(open('deploy.key', 'rb').read()).decode())"
# For Windows or Linux systems that have the GNU coreutils base64 command
base64 --wrap=1000000 deploy.key
# For macOS systems
base64 --break=1000000 deploy.key
출력을 파일로 경로 재 지정하려면 > base64-encoded.txt선택한 파일 이름을 사용하여 추가 하십시오.
이 명령은이 풀 요청의 일부로 프로토 타입 화되었으며 개행을 제거하기 위해 SSH 개인 키를 base64로 인코딩하기위한 크로스 플랫폼 쉘 명령이 필요했습니다.
base64 -d나base64 -D운영 체제에 따라 다릅니다. OSX는를 사용합니다-D.