[mew-dist 25265] Re: B decode 時のエラー条件緩和
Kazu Yamamoto ( 山本和彦 )
kazu at example.com
2004年 9月 7日 (火) 21:31:17 JST
> この encode の何が悪いかと言うと、decode 後文字の長さを規定する = の個
> 数の辻褄が合わない訳ですね? これは、「デコード後文字列は NULL で終ら
> ない」という前提を置けば、 = の個数に頼らない終了判定が可能では無いで
> しょうか?
base64 は、8bit 3文字を 6bit 4文字に変換する符号化方式です。ですので、
base64 で符号化した後は、長さが 4 の倍数になります。
元のデータが 3 の倍数の場合は、問題ありません。最後は、"ABCD" のように
なります。
3n + 1 の場合は "AB=="、3n + 2 の場合は "ABC=" となります。
さて、
=?iso-2022-jp?B?GyRCJCIbKEI?=
を見ると、4 の倍数ではなく、計算すると 1 足りないことが分ります。
しかし、どうやって "=" が落ちたと判断するのですか? "D" が落ちたかもし
れませんよ。
# ちなみに、base64 の復号化は Emacs (の C で書かれた)関数を利用してい
# るので、気の効いた(?)変更は難しいです。
何とか不完全な形で復号化しても、さらに文字コードとして解釈しなければい
けません。不完全なデータを文字コードとして解釈すると、何が起こるか分ら
ないので、かなり気が重いです。
--かず
Mew-dist メーリングリストの案内