কমান্ড লাইনের মাধ্যমে বেস 64 কে কীভাবে এনকোড করা যায়?


214

ম্যাক ওএস এক্স-এ কোনও টার্মিনাল কমান্ড রয়েছে যা একটি ফাইল বা স্টিডিনকে বেস 64 করে দেবে?


5
সচেতন থাকুন যে যদিও বেস 64-এনকোডিং সিনট্যাক্সটি একটি ওএস থেকে অন্য অপারেটিং সিস্টেমের সাথে সামঞ্জস্যপূর্ণ তবে বেস64-ডিকোডিং সিনট্যাক্স হয় হয় base64 -dবা base64 -Dআপনার অপারেটিং সিস্টেমের উপর নির্ভর করে। ওএসএক্স ব্যবহার করে -D
ক্রিস জনসন

@ ক্রিস জোনসন যদি opensslডিকোডিংয়ের জন্য পতাকাটির সাথে কনসার্টে ব্যবহৃত হয় তবে -dএটি ওএস এক্সে রয়েছে (10.10 ইয়োসেমাইট)।
11

উত্তর:


229

opensslএটি আপনার জন্য করতে পারে এবং এটি সমস্ত ডিফল্টরূপে ওএস এক্সের মাধ্যমে ইনস্টল করা হয়েছে; ডারউইনপোর্টগুলি ইনস্টল করার দরকার নেই।

$ openssl base64 -in <infile> -out <outfile>

-inবিকল্প ছাড়া স্টিডিন থেকে পড়া


79
কোনও ফাইলের লিখন এড়ানো openssl base64 < path/to/file.png | tr -d '\n' | pbcopyবা ব্যবহার cat path/to/file.png | openssl base64 | tr -d '\n' | pbcopyকরতে এবং লাইন বিরতি ছাড়াই ক্লিপবোর্ডে বেস 64-এনকোডড আউটপুট অনুলিপি করুন।
ম্যাথিয়াস বাইনেস

3
এবং -dডিকোড করতে একটি পতাকা ব্যবহার করুন।
কেনে

5
ম্যাকের ক্ষেত্রে, একটি স্ট্রিংকে বেসড base৪ ভিত্তিতে এনকোড করতে: openssl base64 -e <<< ramএবং ডিকোড করতে:openssl base64 -d <<< cmFtCg==
রাম পাত্র

8
@ মাথিয়াস আপনি চাইলে নতুন লাইনের কাজটি openssl base64 [-e] -Aকরেন না । + @ ডিকোডে ডিকনড যদি ইনপুটটিতে বেশিরভাগ 76 76 টি অক্ষরে নিউলাইন না থাকে, তবে আমি সবেমাত্র জানিয়েছি এমন নো-নিউলাইনস কেস সহ, আপনার প্রয়োজন হবে -d -Aবা আপনার কোনও ত্রুটি বার্তা ছাড়াই নিখোঁজ বা দুর্নীতিগ্রস্থ ডেটা পাবেন (যদিও এখানে কোনও মুলতুবি বাগ রিপোর্ট রয়েছে যা এটির একটি স্থির হতে পারে)।
dave_thompson_085

2
@ র্যাম, openssl base64 -e <<< ramআসলে একটি পিছনের লাইনের ফিড সহ 4 টি বাইট এনকোড করে; দেখতে hexdump <<< ram
আরজান

92

ওপেনসেল আরও সংক্ষেপে ব্যবহার করা যেতে পারে:

echo -n 'input' | openssl base64

[ইকো-এন -> অবশ্যই ব্যবহার করা উচিত, অথবা নতুন লাইন চরিত্র সহ এনকোডিং করা হবে]

অথবা

openssl base64 <ENTER> [type input] <CTRL+D>

10
যদিও "প্রতিধ্বনি" সমাধান ইনপুট স্ট্রিংয়ের শেষে একটি এলএফ (লাইন ফিড) চর যোগ করে। আরও ভাল ব্যবহার: ইকো-এন 'ইনপুট'
টেম্পেল

7
এবং আরও কিছুটা openssl base64 <<< input
সাফল্য

2
বা শুধু base64ছাড়া ব্যবহার করুন openssl। যেভাবেই হোক, আমাকে দুবার Ctrl + D টিপতে হবে। আর হুঁশিয়ার @Garret: ব্যাশ এ, সহ বা ছাড়া openssl, openssl base64 <<< superuserএবং openssl base64 <<< "superuser" ভুল করে উত্পাদ c3VwZXJ1c2VyCg=="এখানে স্ট্রিং" তাহলে এখনও একটি লাইন ফিড অন্তর্ভুক্ত হিসাবে! ( দৃশ্যত কেবল বাশ নয়, zsh, ksh এবং yash এও। দেখুন See hexdump <<< superuserবেস 64 ফলাফলটি হওয়া উচিত c3VwZXJ1c2Vy))
আরজান

@ আরজান আমি "ভ্রান্তভাবে" শব্দটি ব্যবহার করতে দ্বিধা বোধ করেছি - যেমন আপনি উল্লেখ করেছেন যে, এখানে স্ট্রিংয়ে একটি লাইন ফিড রয়েছে তবে যুক্তিসঙ্গত কারণ হিসাবে - unix.stackexchange.com/questions/20157/…echo -nআপনার যদি নতুন লাইনের প্রয়োজন না হয় তবে পছন্দ করা হয়। এটি অবশ্যই সচেতন হওয়ার মতো কিছু।
স্টিভ ফলি

2
আপনি printfএর জায়গায় ব্যবহার করতে পারেনecho -n
জেসন এস

50

ব্যবহার করার চেষ্টা করুন:

base64 -i <in-file> -o <outfile>

এটি ওএস এক্স-এ ডিফল্টরূপে পাওয়া উচিত should


1
যোগ --decodeকরুন Base64- থেকে স্বাভাবিক প্রক্রিয়া বিপরীত।
ভাগ্যডায়োনাল্ড

1
এটি এসভিজির জন্য এনকোডিংয়ের জন্য ভাল কারণ এটি একটি লাইন তৈরি করে। এটি থেকে আউটপুট তুলনায় পরিষ্কার openssl base64। ধন্যবাদ!
শানিমাল

31

base64 কমান্ডটি আমার ওএস এক্স ১০.৯.৪ এ ডিফল্টরূপে উপলব্ধ।

আপনি ব্যবহার করতে পারেন base64 <<< stringএবং base64 -D <<< stringএনকোড এবং টার্মিনালে একটি স্ট্রিং ডিকোড করতে, অথবা base64 -in fileএবং base64 -D -in fileএনকোড এবং একটি ফাইল ডিকোড করতে।


আপনার কি উদাহরণ আছে? আমি পেতে Invalid characer in input streamযখন ব্যবহার <<<... আমি সঙ্গে চেষ্টা করেছি ", 'স্ট্রিংয়ের কিছুই।
জোনাস

@ জোনাস আপনি কোন শেলটিতে আছেন? আপনি এটি ব্যাশ এবং zsh এ ব্যবহার করতে পারেন।
ডব্লু কে প্লাস

আহ, কিছুই নয়, কাজ করে!
জোনাস

8

পাইথনটি ওএস এক্সের সাথে ডিফল্টরূপে সরবরাহ করা হয়, আপনি এটি নীচের হিসাবে ব্যবহার করতে পারেন:

$ 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

5

গতির ক্ষেত্রে, আমি ওপেনসেল ব্যবহার করব তারপরে পার্ল এবং ইউয়েনকোডের পরে। বহনযোগ্যতার ক্ষেত্রে আমি ইউইনকোড ব্যবহার করব এবং তারপরে পার্ল ওপেনসেল ব্যবহার করবে (যদি আপনি অন্যান্য ইউনিক্সের যতটা সম্ভব স্টক প্ল্যাটফর্মের মতো কোডটি পুনঃব্যবহার করার বিষয়ে চিন্তা করেন)। সতর্কতা অবলম্বন করুন কারণ সমস্ত ইউনিক্স রূপগুলি-এম সুইচ সমর্থন করে না (আইরিস এআইএক্স করে, এইচপি / ইউএক্স করে, সোলারিস দেয় না)।

$ 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

আরএফসি 1521 দ্বারা উল্লিখিত বেস বেস 64 অনুযায়ী ইউউনকোড ফাইল_ইন টেক্সট -m স্যুইচটি ব্যবহার করুন এবং ফাইলনাম.বি 64 এ লিখুন (ফাইলের নাম_ওহেন_ইউডিকোড.ডেক্সট যখন ডিকোডড থাকে তখন ডিফল্ট ফাইলের নাম হিসাবে):

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

5

আপনি এটিকে সরাসরি ক্লিপবোর্ডে পাইপ করতে পারেন (কমপক্ষে ম্যাকের উপরে):

openssl base64 -in [filename] | pbcopy


গল্ফিং:base64 < [filename] | pbcopy
টোটেলগুলি

5

ম্যাকোজে আমি সর্বদা ব্যবহার করি:

echo -n "STRING" | base64

-n হ'ল লাইনের শেষে একটি নতুন লাইন অক্ষর এড়ানো।


3

পাইথন

পাইথন আজকাল সমস্ত ম্যাকের উপর পূর্বনির্ধারিত আসে।

টার্মিনাল রান python(বা আইপিথন ) এ।

একটি ফাইল এনকোড করুন:

 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)

অবশ্যই, উভয় ক্রিয়াকলাপই অননিলায়ারে রূপান্তরিত হতে পারে তবে এই পদ্ধতিটি আরও পঠনযোগ্য।

দ্বারা OpenSSL

## 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মুদ্রণ করবে O

করুন Base64-

ওএসএক্স এবং উবুন্টুতে অন্য একটি উটব ইউটিলিটি উপস্থিত রয়েছে:

## 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

2
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
সিসিপিজ্জা

2

কোনও কারণে, echo -n <data> | openssl base64আমার বেস 64 ডেটার মাঝখানে একটি নতুন লাইন যুক্ত হয়েছে। আমি ধরে নিলাম এটি ছিল কারণ আমার বেস 64 ডেটা সত্যিই দীর্ঘ ছিল।

ব্যবহার echo -n <data> | base64এনকোড এবং echo -n <base64-ed data> | base64 -Dকাজ জরিমানা ডিকোড করতে।


এনবি: আমার নিক্সে, আমাকে -d ইকো-এন সি 29tZXVzZXI6c29tZXBhc3N3b3Jk ব্যবহার করতে হয়েছিল | বেস 64-ডি সামুসার: সিম্পাসওয়ার্ড
mlo55

2

উপরের স্টিভ ফোলির উত্তর ছাড়াও, স্ট্যান্ডিন মোডে এনক্রিপ্ট করার সময় অতিরিক্ত নিউলাইনগুলি পাস করা এড়াতে, কোনও নতুন নিউলাইন ছাড়াই ইনপুট শেষ করতে দুবার CTRL + D টিপুন। আউটপুট একই লাইনের ঠিক পরে দেখাবে।

উদাহরণ স্বরূপ:

$ openssl base64 [Enter]
input<CTRL+D><CTRL+D>aW5wdXQ=
$

বিকল্পভাবে, আপনি ব্যবহার করতে পারেন printf:

$ printf 'input' | openssl base64
aW5wdXQ=
$

1

পার্ল প্লাস এমটাইম :: বেস 64 রয়েছে:

perl -MMIME::Base64 -e 'undef $/;while(<>){print encode_base64($_);}'

এটি প্রাক ইনস্টলড আসে। আপনি কমান্ড লাইনে পৃথক ফাইল নির্দিষ্ট করতে পারেন (বা স্ট্যান্ডার্ড ইনপুটটিতে ডেটা সরবরাহ করতে পারেন); প্রতিটি ফাইল পৃথকভাবে এনকোড করা হয়। আপনি এটি করতে পারেন:

perl -i.txt -MMIME::Base64 -e 'undef $/;while(<>){print encode_base64($_);}' file1

এটি ফাইল 1 কে ফাইল 1.txt এ ব্যাক আপ করে এবং মূল ফাইলের উপরে বেস -ed৪ এনকোডড আউটপুট লিখে writes


1

একটি সাধারণ নোডজেএস সংস্করণ:

node -e "process.stdout.write(new Buffer(process.argv[1]).toString('base64'))" "Hello world!"

OS এর সাথে আসার openssl(এবং এখন base64) হিসাবে এটি উত্তম উত্তর বলে আমি মনে করি না ।
জোশ

কেশ বিভক্ত হওয়ার ঝুঁকিতে - এবং, আমি জানি যে এই সমালোচনা অন্যান্য কয়েকটি উত্তরের ক্ষেত্রেও প্রযোজ্য - প্রশ্নটি কীভাবে কোনও ফাইল বা স্টিডিনকে এনকোড করতে পারে তা জিজ্ঞাসা করা হয়েছিল । যদি আমি ভুল না হয়ে থাকি তবে আপনার উত্তরটি কেবল স্ট্রিংটিকে কীভাবে এনকোড করতে হয় তা দেখায়।
জি-ম্যান

1

recode আপনার জন্য কৌশল করা উচিত

recode ../b64 < file.txt > file.b64

পুনরায় কোড ম্যাকপোর্টের মাধ্যমে ওএস এক্সের জন্য উপলব্ধ ।


সেখানে কি কিছুই নির্মিত হয়নি?
জোশ

@Josh - আছে - OpenSSL
স্টিভ মূর্খতা

ম্যাকপোর্টস কোনও ওএস এক্স বিতরণ নিয়ে আসে না। অন্যান্য প্রচুর বিকল্প রয়েছে। উদাহরণস্বরূপ শুধু base64কমান্ড।
জেসন এস

1

যদি আপনি কোনও ফন্ট ফাইলকে এনকোডিং বেস 64 করে থাকেন তবে আপনি এটি করতে পারেন:

base64 my-webfont.ttf > my-webfont.b64.ttf.txt

আমি এটি সর্বদা একটি ম্যাক (10.10) এ ব্যবহার করি।

দ্রষ্টব্য : কোনও লাইন ব্রেক হবে না।


1

ক্রস প্ল্যাটফর্ম সমাধান

বেস 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(আপনার পছন্দের কোনও ফাইলের নাম ব্যবহার করে)।

এই কমান্ডগুলি এই টানার অনুরোধের অংশ হিসাবে প্রোটোটাইপ করা হয়েছিল যেখানে আমরা নতুন লাইনগুলি সরাতে একটি এসএসএইচ প্রাইভেট কী বেসড এনকোড করতে ক্রস-প্ল্যাটফর্ম শেল কমান্ড চেয়েছিলাম।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.