쉘에서 base32로 인코딩


9

쉘에서 직접 입력 문자열을 base32 인코딩으로 인코딩하려고합니다. 우분투 에서이 작업을 수행하려고하지만 맛이 특히 중요하지 않다고 생각합니다.

단순히 이것을하기 위해 기존의 리눅스 / 유닉스 도구가 있습니까?

다음과 같은 내용이 있습니다.

-bash-3.2$ echo -n 'hello' | base32

답변:


10

흠, 빠른 패키지 검색은 하나의 독립형 유틸리티와 같은 것을 제공하지 않습니다.

반면, 적절한 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

따라서 약간의 변경만으로도 디코딩을 수행 할 수 있습니다.


2

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


2

파이썬 사용하기 :

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

0
  1. 설치 perl-MIME-Base32.noarch:

    yum install perl-MIME-Base32.noarch
    
  2. 스크립트를 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"
    
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.