쉘에서 직접 입력 문자열을 base32 인코딩으로 인코딩하려고합니다. 우분투 에서이 작업을 수행하려고하지만 맛이 특히 중요하지 않다고 생각합니다.
단순히 이것을하기 위해 기존의 리눅스 / 유닉스 도구가 있습니까?
다음과 같은 내용이 있습니다.
-bash-3.2$ echo -n 'hello' | 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
따라서 약간의 변경만으로도 디코딩을 수행 할 수 있습니다.
답변
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";
}
테스트:
$ base32 < <(echo -n 'abcdef')
MFRGGZDFMY
$ base32 -d < <(echo 'MFRGGZDFMY')
abcdef
답변
기본적으로 Ubuntu 16.04에 coreutils의 일부로 설치됩니다 .
$ which base32
/usr/bin/base32
답변
파이썬 사용하기 :
$ 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'
답변
-
설치
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"