Base64でエンコード・デコード

Blowfishに続き、Base64で文字列をエンコード・デコードするクラスを作ってみました。今やっている仕事専用なので文字コードについては汎用性を持たせていません。一番簡単に実装するコツは、JavaMailに含まれているmailapi.jarを使う事です。

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.mail.MessagingException;
import javax.mail.internet.MimeUtility;

public class Base64Util {

    private final String ENCODING = "base64";
    private final String CHARSET = "iso-8859-1";

    public byte decode(String value)
        throws MessagingException, IOException {
        return this.decode(value.getBytes());
    }

    public byte decode(byte value)
        throws MessagingException, IOException {

        InputStream in =
            MimeUtility.decode(new ByteArrayInputStream(value), this.ENCODING);

        byte buf = new byte[1024];
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        int len;
        while *1 != -1) {
            out.write(buf, 0, len);
        }
        return out.toByteArray();
    }

    public String encode(String value)
        throws MessagingException, IOException {
        return this.encode(value.getBytes());
    }

    public String encode(byte[] value)
        throws MessagingException, IOException {

        ByteArrayOutputStream bao = new ByteArrayOutputStream();
        OutputStream out = MimeUtility.encode(bao, this.ENCODING);
        out.write(value);
        out.close();

        return bao.toString(this.CHARSET);
    }
}

BlowfishもBase64もとぉーっても簡単ですね(笑)

*1:len = in.read(buf