විධාන රේඛාවෙන් base64 string විකේතනය කරන්නේ කෙසේද?


469

Base64 string විකේතනය කිරීම සඳහා bash ස්ක්‍රිප්ට් එකක් ලිවීමට මම කැමතියි. උදාහරණයක් ලෙස මම ටයිප් කරන decode QWxhZGRpbjpvcGVuIHNlc2FtZQ==අතර එය මුද්‍රණය Aladdin:open sesameකර නැවත විමසුමට පැමිණේ.

මෙතෙක් මම සරල බාෂ් ගොනුවක් අඩංගු උත්සාහ කර ඇති python -m base64 -d $1නමුත් මෙම විධානයෙන් බලාපොරොත්තු වන්නේ ගොනු නාමයක් නොව නූලකි. අමතර පැකේජ ස්ථාපනය නොකර, මෙය සාක්ෂාත් කර ගැනීම සඳහා විධාන රේඛාවේ සිට ධාවනය කළ හැකි තවත් අන්තර්ක්‍රියාකාරී නොවන විධානයක් (අවශ්‍යයෙන්ම පයිතන් මොඩියුලයක නොවේ) තිබේද? (නැතහොත් මා එසේ කරන්නේ නම් අවම අවම දෙයක්.)

Answers:


673

පැකේජයෙන් base64වැඩසටහන භාවිතා කරන්න coreutils:

echo QWxhZGRpbjpvcGVuIHNlc2FtZQ== | base64 --decode

නැතහොත්, නව රේඛා අක්‍ෂරය ඇතුළත් කිරීමට

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

ප්‍රතිදානය (නව රේඛාව ඇතුළත් වේ):

Aladdin:open sesame

10
හෝ: echo QWxhZGRpbjpvcGVuIHNlc2FtZQ == | base64 --decode && echo
ග්‍රෙග් චබාලා

65
හෝ:base64 -d <<< QWxhZGRpbjpvcGVuIHNlc2FtZQ==
jmk

4
echo QWxhZGRpbjpvcGVuIHNlc2FtZQ== | "C:\Program Files\Git\usr\bin\base64" --decode 2> nul > example.txtවින්ඩෝස් හි git's base64 සමඟ.
ගින්න

3
@January එය නොවේ Just use, බොහෝ මිනිසුන් ගැන දන්නා නිසා, base64වැඩසටහන - නමුත් එක් නොහැකි ලෙස පමණක් විධාන විකල්පය ලෙස වැලක් ඇතුළු කර, එය පමණක් වන අතර වරක් CLI තාක්ෂණය ස්පර්ශ කරන පරිශීලකයන් සඳහා පහත දැක්වෙන syntax භාවිතා අයිතිය ලබා ගැනීමට අපහසු වේ.
feeela

12
මැක්හි, කේතනය කරන ලද නූල ක්ලිප්බෝඩ් එකට පිටපත් කර ධාවනය කරන්න pbpaste | base64 --decode.
මාරියන් Černý

101

openssl හට base64 කේතනය කර විකේතනය කළ හැකිය

$ 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.

9
පිලිප් පිළිතුර ස්තුති, ඔබ දිගු base64 නූල් සඳහා -A එකතු කිරීමට එසේ OpenSSL කිසිවක් ආපසු බලන්න ඕනේ askubuntu.com/a/271676/305568
morloch

ormorloch හෝ බේස් 64 කේතනය කළ දත්ත වලින් නව රේඛා ඉවත් කිරීමෙන් වළකින්න, එය අපේක්ෂා කළ පරිදි ක්‍රියාත්මක වේ ...
geirha

1
මම සැලකිල්ලට නොගන්නා coreutilsවැනි වැඩසටහන් අඩංගු "අමතර" පැකේජය ls, mkdir, cp, mv, සහ chmod. එය නොමැතිව ඔබේ යන්ත්‍රය සමඟ ප්‍රයෝජනවත් යමක් කළ හැකි යැයි මම සැක කරමි.
vidstige

idvidstige, ඒක ඇත්ත. පෙරනිමියෙන් base64 ස්ථාපනය කර නොමැති බවට මා තුළ හැඟීමක් ඇති වූයේ මන්දැයි මම නොදනිමි; එය සම්පූර්ණයෙන්ම එසේ නොවේ.
geirha

1
මෙය උබුන්ටු තොග හුවමාරුව වන අතර, වින්ඩෝස් හි Git Bash හි වැඩ කිරීමේ opensslප්‍රමිතියට වඩා භාවිතා කිරීමේ වාසිය ඇත base64, අවම වශයෙන් මා ස්ථාපනය කර ඇති පැරණි 1.8.1 Git Bash අනුවාදය.
willkil

41

හියර් යූ ගෝ!

ඔබගේ ~/.bashrcගොනුවේ පහළට පහත සඳහන් දෑ එක් කරන්න :

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

දැන්, නව පර්යන්තයක් විවෘත කර විධානය ක්‍රියාත්මක කරන්න.

decode QWxhZGRpbjpvcGVuIHNlc2FtZQ==

මෙය ඔබගේ ප්‍රශ්නයේදී ඔබ ඉල්ලූ දේම හරියටම කරනු ඇත.


20

ඔබගේ මුල් පරායත්තතාවයන් සමඟ ඔබේ මුල් පිටපතෙහි සුළු වෙනස් කිරීමකින් මෙය කළ හැකිය:

echo $1 | python -m base64 -d

ඔබ ගොනු නාමයක් ලබා නොදුනහොත්, එම පයිතන් මොඩියුලය සම්මත ආදානයෙන් කියවනු ලැබේ. පළමු පරාමිතිය එයට ඇතුල් කිරීමට ඔබට භාවිතා කළ හැකිය echo $1 |.


1
එසේම: python -m base32 ගොනු නාමය
kenorb

1
මෙය ක්‍රියා නොකරයි :) නමුත් .b32 * ක්‍රම භාවිතා කරන්න
rzr

15

මම http://wiki.opensslfoundation.com/index.php?title=Command_Line_Utilities හි base64 විධාන රේඛාව විවරණය කළෙමි . එබැවින් opensl base64 විකේතනය භාවිතා කරන විට මම අනතුරු ඇඟවීමක් නිකුත් කරමි:

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

 V2VsY29tZSB0byBvcGVuc3NsIHdpa2kK



openssl base64 -d <<< 'V2VsY29tZSB0byBvcGVuc3NsIHdpa2kK'

Welcome to openssl wiki

අනතුරු ඇඟවීමේ base64 පේළියේ දිග අක්ෂර 64 කට පෙරනිමියෙන් opensl හි සීමා වේ :

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

 V2VsY29tZSB0byBvcGVuc3NsIHdpa2kgd2l0aCBhIHZlcnkgbG9uZyBsaW5lIHRo
 YXQgc3BsaXRzLi4uCg==

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

=> කිසිවක් නැත!

අක්ෂර 64 ට වැඩි පේළි සංග්‍රහයකින් තොරව base64 පේළියක් විකේතනය කිරීමට හැකිවීම -A විකල්පය:

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

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

-A විකල්පය BUGGY (දිගු ලිපිගොනු සමඟ සීමාව) බැවින් මෙය සත්‍ය බෙදීම් පදනම් 64 ට වඩා හොඳය.


4

භාවිතා කිරීම perl

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

නැතහොත් එසේමය python

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

3

එය කිරීමට වෙනත් ක්‍රමයක් එකතු කිරීම සඳහා:

emacs -Q --batch  -eval '(princ (base64-encode-string (read-string ": ")))'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.