我正在寻找编码inputstringbase32编码直接从shell。 我期待在Ubuntu下做到这一点,但我想这里的味道并不特别重要。
有没有现有的Linux / Unix工具只是做这个?
有些东西是:
-bash-3.2$ echo -n 'hello' | base32
嗯,一个快速的软件包search并没有给出任何一个单独的,独立的工具。
另一方面,它表明有一个合适的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
所以,一个小的改变也会让你做解码。
只是对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"; }
testing:
$ base32 < <(echo -n 'abcdef') MFRGGZDFMY $ base32 -d < <(echo 'MFRGGZDFMY') abcdef
安装perl-MIME-Base32.noarch :
yum install perl-MIME-Base32.noarch
将脚本保存在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"