GNU/Linux >> Tutoriels Linux >  >> Linux

Encodage en base32 depuis le shell

Hmm, une recherche rapide de paquets ne donne rien comme un utilitaire unique et autonome.

D'un autre côté, cela montre qu'il existe une bibliothèque Perl appropriée et qu'il est assez facile de créer un script perl rapide. Quelque chose comme :

$ sudo apt-get install libmime-base32-perl

Et puis un script comme 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";

Donc :

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

L'entrée CPAN assez clairsemée est :http://search.cpan.org/~danpeder/MIME-Base32-1.01/Base32.pm

Ainsi, un changement mineur vous permettra également de décoder.


Utilisation de 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'

Juste une amélioration de cjc excellente réponse afin que nous puissions avoir un base32 utilitaire qui fonctionne de manière similaire à base64 dans la façon dont nous pouvons encoder et décoder :

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

Test :

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

Linux
  1. Pouvoir au peuple

  2. Personnalisation du shell Bash

  3. Le point de la commande externe `cd` ?

  4. Priorité des opérateurs logiques Shell &&, ||?

  5. Comprendre la signification de `$_` ?

Qu'est-ce que le Shell sous Linux ?

La boucle while dans les scripts shell

Comment puis-je déterminer l'utilisation actuelle du processeur à partir du shell ?

obtenir les 5 premiers caractères de chaque ligne dans le script shell

adb :trouver le PID à partir du shell adb

Comment vérifier si stdin est /dev/null depuis le shell ?