Mac OS X'te base64'ün bir dosya veya stdin kodlayacağı bir terminal komutu var mı?
opensslçözme bayrağıyla birlikte kullanılması durumunda -dOS X'de (10.10 Yosemite).
Mac OS X'te base64'ün bir dosya veya stdin kodlayacağı bir terminal komutu var mı?
opensslçözme bayrağıyla birlikte kullanılması durumunda -dOS X'de (10.10 Yosemite).
Yanıtlar:
opensslbunu sizin için yapabilir ve hepsi varsayılan olarak OS X ile birlikte kurulur; darwinport yüklemeye gerek yok.
$ openssl base64 -in <infile> -out <outfile>
-inSeçenek olmadan stdin'den okur
openssl base64 < path/to/file.png | tr -d '\n' | pbcopyveya kullanın cat path/to/file.png | openssl base64 | tr -d '\n' | pbcopy.
-dkodunu çözmek için bir bayrak kullanın.
openssl base64 -e <<< ramve kod çözülür:openssl base64 -d <<< cmFtCg==
openssl base64 [-e] -Abunu yapın. + @kenny, girişin, az önce belirttiğim Newlines olayı dahil olmak üzere en fazla her 76 karakterde bir newline içermemesi durumunda, ihtiyacınız olur -d -Aveya hata mesajı vermeden eksik veya bozuk veriler alırsınız (bekleyen bir hata raporu olmasına rağmen). bunun düzeltilmesine neden olabilir).
openssl base64 -e <<< ramgerçekte izleyen satır beslemesi de dahil olmak üzere 4 baytı kodlar; bkz hexdump <<< ram.
Openssl daha kısaca kullanılabilir:
echo -n 'input' | openssl base64
[echo -n -> kullanılmalıdır, yoksa yeni satır karakterini içeren kodlama yapılır]
veya
openssl base64 <ENTER> [type input] <CTRL+D>
openssl base64 <<< input
base64olmadan openssl. Her iki durumda da, Ctrl + D tuşlarına iki kez basmam gerekiyor. Dikkat edin, @Garret: Bash'te, olsun ya da olmasın openssl, openssl base64 <<< superuserve "burada dize" olarak openssl base64 <<< "superuser" yanlış verim c3VwZXJ1c2VyCg==, sonra hala bir satır beslemesi içerir! ( Görünüşe göre sadece Bash'de değil, aynı zamanda zsh, ksh ve yash da. Bakın hexdump <<< superuser. Base64 sonucu şöyle olmalı c3VwZXJ1c2Vy.)
echo -nYeni hatta ihtiyacınız yoksa tercih edilir. Bu kesinlikle dikkat edilmesi gereken bir şey.
printfYerine kullanabilirsinizecho -n
Kullanmayı deneyin:
base64 -i <in-file> -o <outfile>
OS X'te varsayılan olarak bulunmalıdır.
--decodeİşlemi base64'ten normale döndürmek için ekleyin .
openssl base64. Teşekkürler!
base64 OS X 10.9.4'te varsayılan olarak komut mevcuttur.
Sen kullanabilirsiniz base64 <<< stringve base64 -D <<< stringkodlamak ve terminalde bir dize şifresini çözmek, ya da base64 -in fileve base64 -D -in filekodlamak ve bir dosya şifresini çözmek.
Invalid characer in input streamkullanırken <<<... beraber çalıştık ", 've dize etrafında hiçbir şey.
Python varsayılan olarak OS X ile donatıldığından, aşağıdaki gibi kullanabilirsiniz:
$ echo FOO | python -m base64
Rk9PCg==
$ echo Rk9PCg== | python -m base64 -d
FOO
Veya yüklemek coreutilsyoluyla Brew ( brew install coreutilssağlayacak olan) base64komutu:
$ echo FOO | base64
Rk9PCg==
$ echo Rk9PCg== | base64 -d
FOO
Hız açısından, openssl ve ardından perl, ardından uuencode kullanacaktım. Taşınabilirlik açısından, uuencode ve ardından Perl, ardından openssl kullanacağım (Kodu mümkün olduğunca UNIX benzeri hisse senedi platformlarında kullanabilmek için). Ancak, tüm UNIX değişkenlerinin -m anahtarını desteklemediğinden dikkatli olun (iirc AIX yapar, HP / UX yapar, Solaris yok).
$ 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
Tarafından belirtildiği şekilde base64 başına file_in.txt uuencode -m kullanın RFC1521 ve (deşifre varsayılan dosya adı olarak filename_when_uudecoded.txt birlikte) o filename.b64 yazabilirsiniz:
uuencode -m -o filename.b64 file_in.txt filename_when_uudecoded.txt
STDIN örneği:
cat file_in.txt | uuencode -m -o filename.b64 filename_when_uudecoded.txt
Python bugünlerde tüm mac'lara önceden yüklenmiş olarak geliyor.
Terminalde python(veya ipython ) çalıştırın .
Bir dosyayı kodla:
base64data = open('myfile.jpg','rb').read().encode('base64')
open('myfile.txt','w').write(base64data)
Bir dosyanın kodunu çözün:
data = open('myfile.txt').read().decode('base64')
open('myfile.jpg','wb').write(data)
Tabii ki, her iki işlem bir oneliner'a dönüştürülebilir, ancak bu şekilde daha okunur.
## 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/ Atlandığında -output... filenamestdout'a yazdırılır.
Hem OSX hem de Ubuntu'da bulunan başka bir ootb yardımcı programı:
## 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
Kod adı verilen başlıkta görüntülenecek ad.
Örnek:
cat docbook-xsl.css | uuencode -m docbook-xsl.css
veya
uuencode -m -o docbook-xsl.css.b64 docbook-xsl.css docbook-xsl.css
uuencodekodlama olarak değilbase64
Nedense, echo -n <data> | openssl base64base64 verilerimin ortasına yeni bir satır ekledim. Base64 verilerimin gerçekten uzun olduğu için olduğunu sanıyorum.
Kullanılması echo -n <data> | base64kodlamak ve echo -n <base64-ed data> | base64 -Dişlenmiş cezası çözmek için.
Steve Folly'nin yukarıdaki cevabına ek olarak, stdin modunda şifreleme yaparken, fazladan yeni satırları geçmekten kaçınmak için, girişi yeni satırlar olmadan sonlandırmak için CTRL + D tuşlarına iki kez basın. Çıktı, aynı satırdan hemen sonra gösterilecektir.
Örneğin:
$ openssl base64 [Enter]
input<CTRL+D><CTRL+D>aW5wdXQ=
$
Alternatif olarak, kullanabilirsiniz printf:
$ printf 'input' | openssl base64
aW5wdXQ=
$
Perl artı MIME var :: Base64:
perl -MMIME::Base64 -e 'undef $/;while(<>){print encode_base64($_);}'
Bu önceden yüklenmiş olarak geliyor. Komut satırında ayrı dosyalar belirleyebilirsiniz (veya standart girişte verileri sağlayın); Her dosya ayrı ayrı kodlanır. Ayrıca şunları da yapabilirsiniz:
perl -i.txt -MMIME::Base64 -e 'undef $/;while(<>){print encode_base64($_);}' file1
Bu, file1 dosyasını file1.txt dosyasına yedekler ve Base-64 ile kodlanmış çıktıyı orijinal dosyanın üzerine yazar.
Basit bir NodeJS sürümü:
node -e "process.stdout.write(new Buffer(process.argv[1]).toString('base64'))" "Hello world!"
openssl(ve şimdi base64) daha iyi bir cevap olduğunu sanmıyorum .
recode sizin için hile yapmalı
recode ../b64 < file.txt > file.b64
MacPorts aracılığıyla OS X için recode kullanılabilir .
base64komut.
Bir font dosyasını kodlayan base64 iseniz, bunu yapabilirsiniz:
base64 my-webfont.ttf > my-webfont.b64.ttf.txt
Bunu her zaman Mac'te (10.10) kullanırım.
Not : Çizgi yok.
Bir dosyayı base64 olarak kodlamak için platformlar arası kabuk komutlarının bir listesini derledik. Aşağıdaki komutlar bir giriş dosyasını alır ( deploy.keyörneklerde adlandırılır ) ve herhangi bir yeni satır kaydırma yapmadan base64'e dönüştürür. Base64 çıkışı stdout üzerinden terminale yazdırılır.
# 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
Çıktıyı bir dosyaya yönlendirmek için ekleyin > base64-encoded.txt(seçtiğiniz bir dosya adını kullanarak).
Bu komutlar bu çekme isteğinin bir parçası olarak prototip edildi, burada platformlar arası kabuk komutlarının base64 olarak tanımlanmasını istedik.
base64 -ddabase64 -Dişletim sisteminize bağlı olduğunu unutmayın. OSX kullanır-D.