GNU/Linux >> Linux の 問題 >  >> Linux

シェルから base32 へのエンコード

うーん、パッケージをすばやく検索しても、単一のスタンドアロン ユーティリティのようなものは得られません。

一方で、適切な Perl ライブラリが存在することを示しており、簡単な perl スクリプトを作成するのは簡単です。次のようなもの:

$ 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

したがって、小さな変更でデコードもできるようになります。


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'

base32 を取得できるように、cjc の優れた回答を改善しただけです 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

Linux
  1. 人々へのPower(Shell)

  2. シェルがSshから制御されているかどうかを検出する方法は?

  3. シェル論理演算子の優先順位&&、||?

  1. `$ _`の意味を理解しますか?

  2. シェルを終了せずに履歴をアーカイブしますか?

  3. シェルコマンド出力からすべてのSlurmジョブをキャンセルする最良の方法は?

  1. $の意味は?シェルスクリプトでは?

  2. Focusli –GNOMEシェルから自然音を再生する

  3. adb:adb シェルから PID を見つける