原です。

lib/base64.rb に入った「わたなべ式」decode64 ですが、、


def decode64(str)
  string = ''
  for line in str.split("\n")
    line.delete!('^A-Za-z0-9+')         # remove non-base64 chars
    line.tr!('A-Za-z0-9+', ' -_')       # convert to uuencoded format
    len = ["#{32 + line.length * 3 / 4}"].pack("c")
                                        # compute length byte
    string += "#{len}#{line}".unpack("u") # uudecode and concatenate
  end
  return string
end


これって BASE63 になってません?(^^;

    line.delete!('^A-Za-z0-9+') =>
    line.delete!('^A-Za-z0-9+/')
    
    line.tr!('A-Za-z0-9+', ' -_') =>
    line.tr!('A-Za-z0-9+/', ' -_')

ですよね。


そもそも、Christiansen の

> #!/usr/bin/perl
> while (<>) {
>   tr#A-Za-z0-9+/##cd;                   # remove non-base64 chars
>   tr#A-Za-z0-9+/# -_#;                  # convert to uuencoded format
>   $len = pack("c", 32 + 0.75*length);   # compute length byte
>   print unpack("u", $len . $_);         # uudecode and print
> }

から変なんだけど。

自分が使ってるのは、いじっているうちに直していて、今まで
気づかなかったみたです。