遠藤です。 2008/09/22 16:24 Yuki Sonoda <redmine / ruby-lang.org>: > Matzを交えてakrさんと笹田さんと私で話しました。 > > * 互換性を損なってまでpack formatの変更は誰も幸せにならない。許容できない > * Base64クラスを復活させて、新しいRFCに準拠するメソッドを追加するならば反対しない。 > * Base64.rfc4648という名前は酷いので、名前は検討の必要がある。 > > ということで、遠藤さんよろしくお願いします。 今気がついたんですが、RFC 3548 準拠をかたる base64.py はあろうことか 改行を無視しますね。バグだと思いますが。 ちなみに RFC 4648 には以下のような記述があります。 (12. Security Considerations) If non-alphabet characters are ignored, instead of causing rejection of the entire encoding (as recommended), a covert channel that can be used to "leak" information is made possible. The ignored characters could also be used for other nefarious purposes, such as to avoid a string equality comparison or to trigger implementation bugs. The implications of ignoring non-alphabet characters should be understood in applications that do not follow the recommended practice. 実際に security issue につなげるのは難しそうですが、現状の仕様を残す なら一応ドキュメントに一言を書いておく方がいいかもしれません。 それはともかく。 古い RFC は組み込みで最新の RFC はライブラリというのは悲しいので、 m0 の時だけ RFC 4648 準拠というのはどうでしょうか。 つまり pack("m0") は改行を出力せず、unpack("m0") は改行があったら 例外を投げる、というように。 念のため付け加えると、現状でも m8 とかすると出力幅が 8 になります。 -- Yusuke ENDOH <mame / tsg.ne.jp>