スポンサーリンク

このドキュメントの内容は、以下の通りです。

[2010-10-03-1] では、PerlでのBase64エンコードのやり方について書きました。

Base64エンコードでは、データサイズが4の倍数になります。4の倍数に満たない場合には、 = でパディングされます。
a を base64 エンコードすると YQ== になります。
パディングを消すとどう処理されるのか、調べてみました。

サンプルコード


下記のデータをbase64デコードします。
  • パディングを消さない正しいデータ
  • パディングを1つ消したデータ
  • パディングを2つ消したデータ
#!/usr/local/bin/perl -w
use strict;
use MIME::Base64;

# a is YQ==
sub decode_test{
	my ($encoded) = @_;
	my $decoded;

	$decoded = decode_base64 $encoded;
	print "Encoded $encoded\n";
	print "Decoded: $decoded\n";
}
decode_test 'YQ=='; # a
decode_test 'YQ='; # a
decode_test 'YQ'; # a

実行結果


最初の正しいパディングのデータ以外は、
Premature end of base64 data というエラーが標準エラー出力(stderr)に出力されます。
Encoded YQ==
Decoded: a
Premature end of base64 data at remove_padding.pl line 25.
Encoded YQ=
Decoded: a
Premature end of base64 data at remove_padding.pl line 25.
Encoded YQ
Decoded: a

パディングの数が足りなくても、一応、デコードは、してくれます。
参照しているページ (サイト内): [2010-10-03-1]

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー