Wednesday, October 18, 2006
Perl 펄] BASE64 인코더/디코더; 파일을 base64로 인코딩 디코딩하기; File Encode, Decode
base64로 인코딩하는 프로그램이 리눅스나 Cygwin에도 없더군요. 그래서 base64.pl 이라는 펄 프로그램을 만들어 보았습니다.
MIME::Base64 라는 모듈을 사용하는데, 액티브펄(ActivePerl)에는 기본적으로 설치되어 있습니다.
파일명: base64.pl
-e 라는 옵션 뒤에, 파일명을 붙이면 인코딩 결과가 화면으로 출력됩니다. 그것을 > 이런 기호로 재지향(Redirection)하여 텍스트 파일로 저장하면 됩니다.
-d 라는 옵션 뒤에, base64코드로 저장된 텍스트 파일명을 붙이면, 디코딩 결과가 out.bin 이라는 파일로 저장됩니다. 출력 파일명을 뒤에 붙여 주면 out.bin 대신 다른 이름으로 하드에 저장됩니다.
▶▶ 이진파일을 텍스트파일로 변환, 바이너리를 아스키로, Convert Binary File to Text File
MIME::Base64 라는 모듈을 사용하는데, 액티브펄(ActivePerl)에는 기본적으로 설치되어 있습니다.
BASE64 인코더/디코더
파일명: base64.pl
#!/usr/bin/perl
use strict; use warnings;
use MIME::Base64 qw( encode_base64 decode_base64 );
&help if $#ARGV < 1; # 옵션이 없거나 부족하면 도움말 출력
if ($ARGV[0] eq "-e") { encodeFile(@ARGV); } # 인코딩
elsif ($ARGV[0] eq "-d") { decodeFile(@ARGV); } # 디코딩
else { &help; } # 도움말
sub encodeFile {
open IN, "<", $_[1] or die "$!: '$ARGV[1]'\n"; binmode(IN);
my $buf;
while (read(IN, $buf, 60 * 57)) {
print encode_base64($buf);
}
close(IN);
}
sub decodeFile {
my $output_filename = "out.bin"; # 출력 파일 기본값
$output_filename = $_[2] if defined $_[2]; # 출력 파일을 지정했다면, 그 이름을 사용
open IN, "<", $_[1] or die "$!: '$_[1]'\n";
open OUT, ">", $output_filename or die "$!: '$output_filename'\n"; binmode(OUT);
while (<IN>) {
print OUT decode_base64($_);
}
close(IN); close(OUT);
}
sub help {
die <<TEXT;
BASE64 Encoder/Decoder v1.0 (2006)
https://mwultong.blogspot.com/
[ Usage ]
Encode : base64.pl -e <input filename>
Decode : base64.pl -d <input filename> [output filename]
* Default Output File : out.bin
[ Examples ]
Encode : base64.pl -e test.jpg > base64.txt
Decode : base64.pl -d base64.txt test.jpg
TEXT
}
use strict; use warnings;
use MIME::Base64 qw( encode_base64 decode_base64 );
&help if $#ARGV < 1; # 옵션이 없거나 부족하면 도움말 출력
if ($ARGV[0] eq "-e") { encodeFile(@ARGV); } # 인코딩
elsif ($ARGV[0] eq "-d") { decodeFile(@ARGV); } # 디코딩
else { &help; } # 도움말
sub encodeFile {
open IN, "<", $_[1] or die "$!: '$ARGV[1]'\n"; binmode(IN);
my $buf;
while (read(IN, $buf, 60 * 57)) {
print encode_base64($buf);
}
close(IN);
}
sub decodeFile {
my $output_filename = "out.bin"; # 출력 파일 기본값
$output_filename = $_[2] if defined $_[2]; # 출력 파일을 지정했다면, 그 이름을 사용
open IN, "<", $_[1] or die "$!: '$_[1]'\n";
open OUT, ">", $output_filename or die "$!: '$output_filename'\n"; binmode(OUT);
while (<IN>) {
print OUT decode_base64($_);
}
close(IN); close(OUT);
}
sub help {
die <<TEXT;
BASE64 Encoder/Decoder v1.0 (2006)
https://mwultong.blogspot.com/
[ Usage ]
Encode : base64.pl -e <input filename>
Decode : base64.pl -d <input filename> [output filename]
* Default Output File : out.bin
[ Examples ]
Encode : base64.pl -e test.jpg > base64.txt
Decode : base64.pl -d base64.txt test.jpg
TEXT
}
인코딩하는 법
-e 라는 옵션 뒤에, 파일명을 붙이면 인코딩 결과가 화면으로 출력됩니다. 그것을 > 이런 기호로 재지향(Redirection)하여 텍스트 파일로 저장하면 됩니다.
디코딩하는 법
-d 라는 옵션 뒤에, base64코드로 저장된 텍스트 파일명을 붙이면, 디코딩 결과가 out.bin 이라는 파일로 저장됩니다. 출력 파일명을 뒤에 붙여 주면 out.bin 대신 다른 이름으로 하드에 저장됩니다.
▶▶ 이진파일을 텍스트파일로 변환, 바이너리를 아스키로, Convert Binary File to Text File
tag: perl
Perl | 펄
<< Home