GNU/Linux >> Belajar Linux >  >> Linux

Pengkodean ke base32 dari shell

Hmm, pencarian paket cepat tidak memberikan utilitas tunggal yang berdiri sendiri.

Di sisi lain, ini menunjukkan bahwa ada perpustakaan Perl yang sesuai, dan cukup mudah untuk menyiapkan skrip perl cepat. Sesuatu seperti:

$ sudo apt-get install libmime-base32-perl

Dan kemudian skrip seperti 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";

Jadi:

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

Entri CPAN yang cukup jarang adalah:http://search.cpan.org/~danpeder/MIME-Base32-1.01/Base32.pm

Jadi, perubahan kecil juga akan memungkinkan Anda melakukan dekode.


Menggunakan Python:

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

Hanya peningkatan cjc jawaban yang sangat baik sehingga kami dapat memiliki base32 utilitas yang bekerja mirip dengan base64 dengan cara kita dapat menyandikan dan mendekodekan:

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

Tes:

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

Linux
  1. Inti Dari Perintah Eksternal `cd`?

  2. Bagaimana Mendeteksi Jika Shell Dikendalikan Dari Ssh?

  3. Diutamakan Operator Logika Shell &&, ||?

  1. Memahami Arti `$_`?

  2. Riwayat Arsip Tanpa Keluar dari Shell?

  3. Menggunakan perintah passwd dari dalam skrip shell

  1. dapatkan 5 karakter pertama dari setiap baris dalam skrip Shell

  2. Bagaimana cara menjalankan perintah Vim dari shell?

  3. Bagaimana cara memeriksa apakah stdin /dev/null dari shell?