क्या मैक ओएस एक्स में एक टर्मिनल कमांड है जो कि बेस 64 एक फाइल या स्टड को एनकोड करेगा?
openssl
डिकोडिंग के लिए ध्वज के साथ कंसर्ट में उपयोग किया जाता है, तो वह -d
ओएस एक्स (10.10 योसेमाइट) पर होता है।
क्या मैक ओएस एक्स में एक टर्मिनल कमांड है जो कि बेस 64 एक फाइल या स्टड को एनकोड करेगा?
openssl
डिकोडिंग के लिए ध्वज के साथ कंसर्ट में उपयोग किया जाता है, तो वह -d
ओएस एक्स (10.10 योसेमाइट) पर होता है।
जवाबों:
openssl
आपके लिए यह कर सकता है, और यह डिफ़ॉल्ट रूप से ओएस एक्स के साथ स्थापित है; डार्विनपोर्ट स्थापित करने की आवश्यकता नहीं है।
$ openssl base64 -in <infile> -out <outfile>
-in
विकल्प के बिना स्टड से पढ़ता है
openssl base64 < path/to/file.png | tr -d '\n' | pbcopy
या cat path/to/file.png | openssl base64 | tr -d '\n' | pbcopy
छोड़ें और बस लाइन टूटने के बिना क्लिपबोर्ड पर बेस 64-एन्कोडेड आउटपुट को कॉपी करें।
-d
डिकोड करने के लिए एक ध्वज का उपयोग करें ।
openssl base64 -e <<< ram
और डिकोड करने के लिए:openssl base64 -d <<< cmFtCg==
openssl base64 [-e] -A
। + @ डेनी पर अगर इनपुट में हर 76 वर्णों पर नईलाइन नहीं है, तो मेरे द्वारा बताए गए नो-न्यूलाइन्स मामले सहित, आपको कोई ज़रूरत नहीं है -d -A
या आपको कोई त्रुटि संदेश के साथ लापता या दूषित डेटा मिलेगा (हालांकि एक लंबित बग रिपोर्ट है जो इसके परिणामस्वरूप ठीक हो सकता है)।
openssl base64 -e <<< ram
वास्तव में 4 बाइट्स को एनकोड करता है, जिसमें एक अनुगामी रेखा फ़ीड भी शामिल है; देखते हैं hexdump <<< ram
।
Openssl का उपयोग अधिक आसानी से किया जा सकता है:
echo -n 'input' | openssl base64
[इको-एन -> का उपयोग किया जाना चाहिए, या नई लाइन वर्ण सहित एन्कोडिंग किया जाएगा]
या
openssl base64 <ENTER> [type input] <CTRL+D>
openssl base64 <<< input
base64
बिना उपयोग के openssl
। किसी भी तरह से, मुझे दो बार Ctrl + D दबाना होगा। और सावधान रहना, @Garret: बैश में, के साथ या बिना openssl
, openssl base64 <<< superuser
और openssl base64 <<< "superuser"
ग़लती से उपज c3VwZXJ1c2VyCg==
"यहाँ स्ट्रिंग" तो अभी भी एक लाइन फीड शामिल के रूप में,! ( जाहिरा तौर पर न केवल बाश में, बल्कि zsh, ksh और यश में भी। देखें hexdump <<< superuser
। बेस 64 परिणाम होना चाहिए c3VwZXJ1c2Vy
।)
echo -n
यदि आपको नईलाइन की आवश्यकता नहीं है, तो इसे प्राथमिकता दी जाती है। यह निश्चित रूप से जागरूक होने के लिए कुछ है।
printf
स्थान पर उपयोग कर सकते हैंecho -n
प्रयोग करके देखें:
base64 -i <in-file> -o <outfile>
यह ओएस एक्स पर डिफ़ॉल्ट रूप से उपलब्ध होना चाहिए।
--decode
बेस 64 से सामान्य करने के लिए प्रक्रिया को उल्टा करने के लिए।
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
उपयोग करते समय मिलता हूं <<<
... मैंने कोशिश की है "
, '
और स्ट्रिंग के आसपास कुछ भी नहीं है।
चूंकि पायथन डिफ़ॉल्ट रूप से ओएस एक्स के साथ प्रदान किया जाता है, आप इसे नीचे के रूप में उपयोग कर सकते हैं:
$ echo FOO | python -m base64
Rk9PCg==
$ echo Rk9PCg== | python -m base64 -d
FOO
या ब्रू केcoreutils
माध्यम से स्थापित करें ( ) जो कमांड प्रदान करेगा :brew install coreutils
base64
$ echo FOO | base64
Rk9PCg==
$ echo Rk9PCg== | base64 -d
FOO
गति के संदर्भ में, मैं ओपनसेल का उपयोग करता हूं, उसके बाद पर्ल, उसके बाद यूनुकोड। पोर्टेबिलिटी के संदर्भ में, मैं uuencode का उपयोग पर्ल के बाद ओपनसेल (यदि आप कोड को पुन: उपयोग करने के बारे में परवाह करते हैं, तो संभव है कि स्टॉक प्लेटफॉर्म जैसे कई अन्य यूनिक्स पर)। हालांकि सावधान रहें क्योंकि सभी UNIX वेरिएंट -m स्विच (iirc AIX does, HP / UX does, Solaris does) का समर्थन नहीं करते हैं।
$ 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.b64 को लिखने (डिफ़ॉल्ट फ़ाइल नाम के रूप में filename_when_uudecoded.txt साथ जब डीकोड):
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
को छोड़ना stdout को प्रिंट करेगा।
OSX और उबंटू दोनों में मौजूद एक और 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
uuencode -m [-o output_file] [file] 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 base64
मेरे आधार 64 डेटा के बीच में एक नई पंक्ति जोड़ी गई। मुझे लगता है कि यह इसलिए था क्योंकि मेरा आधार 64 डेटा वास्तव में लंबा था।
का उपयोग करते हुए echo -n <data> | base64
एन्कोड करने के लिए और echo -n <base64-ed data> | base64 -D
काम ठीक डिकोड करने के लिए।
ऊपर दिए गए स्टीव फोली के जवाब के अलावा, जब स्टडिन मोड में एन्क्रिप्ट किया जाता है, तो अतिरिक्त नईलाइनों को पारित करने से बचने के लिए, CTRL + D को दो बार दबाकर बिना किसी अतिरिक्त newlines के इनपुट समाप्त कर सकते हैं। आउटपुट एक ही लाइन के ठीक बाद दिखाई देगा।
उदाहरण के लिए:
$ openssl base64 [Enter]
input<CTRL+D><CTRL+D>aW5wdXQ=
$
वैकल्पिक रूप से, आप उपयोग कर सकते हैं printf
:
$ printf 'input' | openssl base64
aW5wdXQ=
$
पर्ल प्लस माइम :: बेस 64:
perl -MMIME::Base64 -e 'undef $/;while(<>){print encode_base64($_);}'
यह पहले से इंस्टॉल आता है। आप कमांड लाइन पर अलग-अलग फ़ाइलों को निर्दिष्ट कर सकते हैं (या मानक इनपुट पर डेटा की आपूर्ति कर सकते हैं); प्रत्येक फ़ाइल को अलग से एन्कोड किया गया है। आप भी कर सकते हैं:
perl -i.txt -MMIME::Base64 -e 'undef $/;while(<>){print encode_base64($_);}' file1
यह file1.txt को file1 का बैकअप देता है, और मूल फ़ाइल पर Base-64 एन्कोडेड आउटपुट लिखता है।
एक सरल NodeJS संस्करण:
node -e "process.stdout.write(new Buffer(process.argv[1]).toString('base64'))" "Hello world!"
openssl
(और अब base64
) ओएस के साथ एक बेहतर जवाब है ।
recode आप के लिए चाल करना चाहिए
recode ../b64 < file.txt > file.b64
MacPorts के माध्यम से OS X के लिए रिकोड उपलब्ध है ।
base64
कमांड।
हमने किसी फाइल को बेस 64 के रूप में एनकोड करने के लिए क्रॉस-प्लेटफॉर्म शेल कमांड की एक सूची तैयार की है। निम्न आदेश एक इनपुट फ़ाइल लेते हैं ( deploy.key
उदाहरणों में नामित ) और इसे बिना किसी नई रैपिंग के बेस 64 में रूपांतरित करें। बेस 64 आउटपुट को स्टडआउट के माध्यम से टर्मिनल पर प्रिंट किया जाता है।
# 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
(अपने चयन के फ़ाइल नाम का उपयोग करके)।
इन आदेशों को इस पुल अनुरोध के हिस्से के रूप में प्रोटोटाइप किया गया था, जहां हम base64 में क्रॉस-प्लेटफॉर्म शेल कमांड चाहते थे ताकि नईलाइनों को हटाने के लिए SSH निजी कुंजी को एनकोड किया जा सके।
base64 -d
या तोbase64 -D
आपके ऑपरेटिंग सिस्टम पर निर्भर करता है। OSX का उपयोग करता है-D
।