শেল থেকে বেস 32 এ এনকোডিং


9

আমি শেল থেকে সরাসরি 3232 এনকোডিংয়ে একটি ইনপুট স্ট্রিংটি এনকোড করতে দেখছি। আমি এটি উবুন্টুতে করতে চাইছি, তবে আমি ধারণা করি এখানে স্বাদটি বিশেষভাবে গুরুত্বপূর্ণ নয়।

এটি করার জন্য কি কোনও বিদ্যমান লিনাক্স / ইউনিক্স সরঞ্জাম রয়েছে?

এর লাইন ধরে কিছু:

-bash-3.2$ echo -n 'hello' | base32

উত্তর:


10

হুঁ, একটি দ্রুত প্যাকেজ অনুসন্ধান কোনও একক, একক স্ট্যান্ডলোন ইউটিলিটির মতো কিছু দেয় না।

অন্যদিকে, এটি দেখায় যে একটি উপযুক্ত পার্ল লাইব্রেরি রয়েছে এবং দ্রুত পার্ল স্ক্রিপ্টটি হুইপ করা যথেষ্ট সহজ। কিছুটা এইরকম:

$ sudo apt-get install libmime-base32-perl

এবং তারপরে একটি স্ক্রিপ্ট base32enc.pl:

#!/usr/bin/perl

use MIME::Base32 qw( RFC );

undef $/;  # in case stdin has newlines
$string = <STDIN>;

$encoded = MIME::Base32::encode($string);

print "$encoded\n";

তাই:

$ echo -n "hello" | ./base32enc.pl
NBSWY3DP

মোটামুটি বিচ্ছিন্ন সিপিএএন এন্ট্রিটি হ'ল: http://search.cpan.org/~danpeder/MIME-Base32-1.01/Base32.pm

সুতরাং, একটি সামান্য পরিবর্তন আপনাকে ডিকোডগুলিও করতে দেয়।


2

সিজেসি চমৎকার উত্তরের কেবল একটি উন্নতি যাতে আমাদের একটি base32ইউটিলিটি থাকতে পারে যা base64আমরা এনকোড এবং ডিকোড করতে পারি সেইভাবে কাজ করে :

#! /usr/bin/perl

use MIME::Base32;
use strict;

undef $/;

my $string = <STDIN>;
my $changed;

if ( $ARGV[0] eq "-d" ){
        $changed = MIME::Base32::decode($string);
}else{
        $changed = MIME::Base32::encode($string); 
}

if ( $changed =~ /\n$/ ) {
    printf $changed;
}else{
    printf $changed . "\n";
}

টেস্ট:

$ base32 < <(echo -n 'abcdef')
MFRGGZDFMY
$ base32 -d < <(echo  'MFRGGZDFMY')
abcdef


2

পাইথন ব্যবহার:

$ python
Python 2.7.14 (default, Sep 27 2017, 12:15:00) 
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import base64
>>> base64.b32encode('hello')
'NBSWY3DP'

0
  1. ইনস্টল করুন perl-MIME-Base32.noarch:

    yum install perl-MIME-Base32.noarch
    
  2. বেস 32 ফাইলনামে স্ক্রিপ্টটি সংরক্ষণ করুন:

    #!/usr/bin/perl
    
    use MIME::Base32 qw( RFC );
    
    undef $/;  # in case stdin has newlines
    $ed=$ARGV[0];
    $string=$ARGV[1];
    if ($ed eq "-e")
    {
    $encoded = MIME::Base32::encode($string);
    print "$encoded\n";
    }
    elsif ($ed eq "-d")
    {
    $decoded = MIME::Base32::decode($string);
    print "$decoded\n";
    }
    else { print " please pass option also\n";
    exit;
    }
    
    chmod +x base32
    cp base32 /usr/bin/
    base32 -e string
    base32 -d "any encoded value"
    
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.