태그 보관물: encoding

encoding

쉘에서 base32로 인코딩 맛이 특히 중요하지 않다고 생각합니다. 단순히

쉘에서 직접 입력 문자열을 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'


답변

  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"
    

답변