क्या मैक ओएस एक्स में एक टर्मिनल कमांड है जो कि बेस 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 coreutilsbase64
$ 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।