Kabuktan base32'ye kodlama


9

Doğrudan kabuktan base32 kodlama için bir giriş dizesi kodlamak için arıyorum. Bunu ubuntu'da yapmak istiyorum, ama lezzetin burada önemli olmadığını hayal ediyorum.

Bunu yapmak için mevcut herhangi bir linux / unix aracı var mı?

Çizgileri boyunca bir şey:

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

Yanıtlar:


10

Hmm, hızlı bir paket araması tek başına, bağımsız bir yardımcı program gibi bir şey vermez.

Öte yandan, uygun bir Perl kütüphanesi olduğunu ve hızlı bir perl betiğini hazırlamanın yeterince kolay olduğunu gösterir. Gibi bir şey:

$ sudo apt-get install libmime-base32-perl

Ve sonra şöyle bir senaryo 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";

Yani:

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

Oldukça seyrek CPAN girişi: http://search.cpan.org/~danpeder/MIME-Base32-1.01/Base32.pm

Yani, küçük bir değişiklik de kod çözme yapmanıza izin verecektir.


2

Sadece cjc mükemmel cevabının iyileştirilmesi, böylece kodlayıp kod çözme şeklimize base32benzer şekilde çalışan bir yardımcı programımız base64olabilir:

#! /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";
}

Ölçek:

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


2

Python kullanma:

$ 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. Kurulum perl-MIME-Base32.noarch:

    yum install perl-MIME-Base32.noarch
    
  2. Komut dosyasını bas32 dosya adına kaydedin:

    #!/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"
    
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.