Ruby に組み込まれている Base64 ライブラリは、いくつかの '\n' を追加しています。原因がわかりません。この特別な例では:
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'base64'
=> true
irb(main):003:0> str = "1110--ad6ca0b06e1fbeb7e6518a0418a73a6e04a67054"
=> "1110--ad6ca0b06e1fbeb7e6518a0418a73a6e04a67054"
irb(main):004:0> Base64.encode64(str)
=> "MTExMC0tYWQ2Y2EwYjA2ZTFmYmViN2U2NTE4YTA0MThhNzNhNmUwNGE2NzA1\nNA==\n"
\n は最後から 6 番目の位置にあります。デコーダー (Base64.decode64) は古い文字列を完全に返します。奇妙なことに、これらの \n はエンコードされた文字列に値を追加しません。出力文字列から改行を削除すると、デコーダーは再び完全にデコードします。
irb(main):005:0> Base64.decode64(Base64.encode64(str).gsub("\n", '')) == str
=> true
さらに、別の JS ライブラリを使用して、同じ入力文字列の base64 でエンコードされた出力を生成しました。出力には \n が含まれていません。
これはバグか何かですか?誰もこの問題に直面したことがありますか?
ご参考までに、
$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]