शेल से बेस 32 तक एनकोडिंग


9

मैं शेल से सीधे base32 एन्कोडिंग के लिए एक इनपुट स्ट्रिंग को एनकोड करना चाहता हूं। मैं ubuntu में ऐसा करने के लिए देख रहा हूँ, लेकिन मुझे लगता है कि स्वाद विशेष रूप से यहाँ मायने नहीं रखता है।

वहाँ किसी भी मौजूदा linux / यूनिक्स उपकरण बाहर वहाँ बस यह करने के लिए कर रहे हैं?

की तर्ज पर कुछ:

-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

काफी विरल CPAN प्रविष्टि है: http://search.cpan.org/~danpeder/MIME-Base32-1.01/Base32.pm

इसलिए, एक मामूली बदलाव आपको डिकोड करने देगा, यह भी।


2

Cjc उत्कृष्ट उत्तर का सिर्फ एक सुधार ताकि हम एक 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. Bas32 फ़ाइल नाम में स्क्रिप्ट सहेजें:

    #!/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"
    
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.