প্রশ্ন কিভাবে কমান্ড লাইন থেকে একটি বেস 64 স্ট্রিং ডিকোড করতে পারি?


আমি একটি বেস 64 স্ট্রিং ডিকোড করতে একটি bash স্ক্রিপ্ট লিখতে চাই। উদাহরণস্বরূপ আমি টাইপ decode QWxhZGRpbjpvcGVuIHNlc2FtZQ== এবং এটা প্রিন্ট Aladdin:open sesame এবং প্রম্পট ফিরে।

এ পর্যন্ত আমি একটি সহজ bash ফাইল ধারণকারী আছে python -m base64 -d $1 কিন্তু এই কমান্ড একটি ফাইলের নাম একটি স্ট্রিং আশা করে। অন্য কোন অ-ইন্টারেক্টিভ কমান্ড (পাইথন মডিউলে প্রয়োজনীয় নয়) যে কোনও অতিরিক্ত প্যাকেজ ইনস্টল না করেই আমি এই কমান্ড লাইন থেকে রান করতে পারি? (অথবা আমি যদি, সুপার-সংক্ষিপ্ত কিছু।)


320
2017-08-21 12:17


উত্স




উত্তর:


শুধু ব্যবহার করুন base64 প্রোগ্রাম থেকে coreutils প্যাকেজ:

echo QWxhZGRpbjpvcGVuIHNlc2FtZQ== | base64 --decode

অথবা, নতুন লাইন অন্তর্ভুক্ত করতে

echo `echo QWxhZGRpbjpvcGVuIHNlc2FtZQ== | base64 --decode`

আউটপুট (নতুন লাইন অন্তর্ভুক্ত):

Aladdin:open sesame

484
2017-08-21 13:34



অথবা: echo QWxhZGRpbjpvcGVuIHNlc2FtZQ == | base64 - ডিস্কোড এবং & echo - Greg Chabala
বা: base64 -d <<< QWxhZGRpbjpvcGVuIHNlc2FtZQ== - jmk
echo QWxhZGRpbjpvcGVuIHNlc2FtZQ== | "C:\Program Files\Git\usr\bin\base64" --decode 2> nul > example.txt উইন্ডোজ উপর Git বেস64 সঙ্গে। - Fire
@ জেনারি এটা না Just use, কারণ অনেক মানুষ সম্পর্কে জানতে base64 প্রোগ্রাম - কিন্তু এক হিসাবে করতে পারেন না মাত্র কমান্ড লাইন বিকল্প হিসাবে একটি স্ট্রিং সন্নিবেশ করান, অল্প সময়ের মধ্যে কেবলমাত্র CLI স্পর্শকারী ব্যবহারকারীদের সিনট্যাক্স অধিকার পাওয়া কঠিন। - feeela
ম্যাক অন ক্লিপবোর্ডে এনকোড করা স্ট্রিং অনুলিপি করুন এবং চালান pbpaste | base64 --decode। - Marián Černý


openssl এনকোড এবং বেস64 ডিকোড করতে পারেন

$ openssl enc -base64 <<< 'Hello, World!'
SGVsbG8sIFdvcmxkIQo=
$ openssl enc -base64 -d <<< SGVsbG8sIFdvcmxkIQo=
Hello, World!

সম্পাদনা করুন: একটি উদাহরণ যেখানে base64 এনকোড করা স্ট্রিংটি একাধিক লাইনগুলিতে শেষ হয়:

$ openssl enc -base64 <<< 'And if the data is a bit longer, the base64 encoded data will span multiple lines.'
QW5kIGlmIHRoZSBkYXRhIGlzIGEgYml0IGxvbmdlciwgdGhlIGJhc2U2NCBlbmNv
ZGVkIGRhdGEgd2lsbCBzcGFuIG11bHRpcGxlIGxpbmVzLgo=
$ openssl enc -base64 -d << EOF
> QW5kIGlmIHRoZSBkYXRhIGlzIGEgYml0IGxvbmdlciwgdGhlIGJhc2U2NCBlbmNv
> ZGVkIGRhdGEgd2lsbCBzcGFuIG11bHRpcGxlIGxpbmVzLgo=
> EOF
And if the data is a bit longer, the base64 encoded data will span multiple lines.

75
2017-08-21 22:23



ফিলিপের উত্তর ধন্যবাদ, আপনাকে দীর্ঘ বেস 64 স্ট্রিংগুলির জন্য অ্যাড-এ লাগাতে হবে নাহলে অন্যথায় openssl কিছুই ফেরত দেবে না, দেখুন askubuntu.com/a/271676/305568 - morloch
@ মোরলোক বা বেস 64 এনকোডেড ডেটা থেকে নতুন লাইনগুলি সরাতে এড়ান, এবং এটি প্রত্যাশিত হিসাবে কাজ করে ... - geirha
আমি বিবেচনা করবে না coreutils একটি "অতিরিক্ত" প্যাকেজ মত প্রোগ্রাম ধারণকারী ls, mkdir, cp, mv, এবং chmod। আমি এটা ছাড়া আপনার মেশিনের সাথে দরকারী কিছু করতে পারেন সন্দেহ। - vidstige
@ উইডস্টিজ, এটা সত্যি। আমি জানি না যে কেন আমি বেস 664 ডিফল্টরূপে ইনস্টল করা ছিল না যে ছাপ অধীনে ছিল; যে ক্ষেত্রে সম্পূর্ণ না। - geirha
এই Uubuntu স্ট্যাক বিনিময়, ব্যবহার করা হয় openssl মান উপর সুবিধা আছে base64 উইন্ডোজ এর জিট ব্যাশে কাজ করার জন্য, অন্তত পুরানো 1.8.1 গিট বাশ সংস্করণ আমি ইনস্টল করেছি। - willkil


এখানে আপনি যান!

আপনার নীচে নিচের যোগ করুন ~/.bashrc ফাইল:

decode () {
  echo "$1" | base64 -d ; echo
}

এখন, একটি নতুন টার্মিনাল খুলুন এবং কমান্ড চালান।

decode QWxhZGRpbjpvcGVuIHNlc2FtZQ==

এই আপনি আপনার প্রশ্নের জন্য জিজ্ঞাসা ঠিক কি করতে হবে।


32
2017-08-21 13:39





আপনার আসল নির্ভরতার সাথে আপনার মূল স্ক্রিপ্টে একটি ক্ষুদ্র সংশোধন সহ এটি করা সম্ভব:

echo $1 | python -m base64 -d

যদি আপনি একটি ফাইল নাম না পাস করেন তবে সেই পাইথন মডিউল স্ট্যান্ডার্ড ইনপুট থেকে পড়বে। আপনি এটি ব্যবহার করতে পারেন প্রথম পরামিতি পাইপ করতে echo $1 |


18
2017-10-05 12:15



এছাড়াও: Python -M base32 ফাইলের নাম - kenorb
এই কাজ করে না :) কিন্তু .b32 * পদ্ধতি ব্যবহার করুন - rzr


আমি base64 কমান্ড লাইন মন্তব্য করেছেন http://wiki.opensslfoundation.com/index.php?title=Command_Line_Utilities। তাই আমি opensl base64 ডিকোডিং ব্যবহার করার সময় একটি সতর্কতা জারি করি:

 openssl base64 -e <<< 'Welcome to openssl wiki'

 V2VsY29tZSB0byBvcGVuc3NsIHdpa2kK



openssl base64 -d <<< 'V2VsY29tZSB0byBvcGVuc3NsIHdpa2kK'

Welcome to openssl wiki

সাবধানবাণী base64 লাইন দৈর্ঘ্য openssl ডিফল্টরূপে 64 অক্ষর সীমাবদ্ধ :

 openssl base64 -e <<< 'Welcome to openssl wiki with a very long line
 that splits...'

 V2VsY29tZSB0byBvcGVuc3NsIHdpa2kgd2l0aCBhIHZlcnkgbG9uZyBsaW5lIHRo
 YXQgc3BsaXRzLi4uCg==

openssl base64 -d <<< 'V2VsY29tZSB0byBvcGVuc3NsIHdpa2kgd2l0aCBhIHZlcnkgbG9uZyBsaW5lIHRoYXQgc3BsaXRzLi4uCg=='

=> কিছুই না!

64 অক্ষরের ব্যবহার -২ বিকল্পের চেয়ে লাইন ফিড ছাড়াই একটি বেস 64 লাইন ডিকোড করতে সক্ষম হবেন:

openssl base64 -d -A <<<
'V2VsY29tZSB0byBvcGVuc3NsIHdpa2kgd2l0aCBhIHZlcnkgbG9uZyBsaW5lIHRoYXQgc3BsaXRzLi4uCg=='

Welcome to openssl wiki with a very long line that splits...

6464 লাইনের মধ্যে 6464 বেসিক ফলাফলটি প্রকৃতপক্ষে বিভক্ত করার পক্ষে এটি ভাল তবে -A বিকল্পটি BUGGY (দীর্ঘ ফাইলগুলির সাথে সীমাবদ্ধ)।


12
2018-03-23 18:23



@ সেথ দয়া করে সঠিকভাবে ব্লক রিসেট করুন, আপনার সম্পাদন আমার interleaved মন্তব্য সঙ্গে openssl কমান্ড একত্রিত। - philippe lhardy
আপনি এটা ঠিক করতে পারবো? আমি দুইজনের মধ্যে পার্থক্য করতে পারছি না ... আমি চেষ্টা করব, কিন্তু আপনাকে আমাকে সাহায্য করতে হতে পারে ;-) - Seth♦
ভাল শুধু একটি চেহারা নিতে আছে wiki.opensslfoundation.com/... যেখানে আমি উইকি সিনট্যাক্স ব্যবহার করতে পরিচালিত করেছি (এই পৃষ্ঠায় অনুসন্ধান বেস 64)। - philippe lhardy


ব্যবহার perl

perl -MMIME::Base64 -ne 'printf "%s\n",decode_base64($_)' <<< "QWxhZGRpbjpvcGVuIHNlc2FtZQ=="

অথবা একই সঙ্গে python

python -m base64 -d <<< "QWxhZGRpbjpvcGVuIHNlc2FtZQ=="

4
2017-07-02 20:22





শুধু এটি করার আরেকটি উপায় যোগ করুন:

emacs -Q --batch  -eval '(princ (base64-encode-string (read-string ": ")))'

2
2018-06-15 06:27