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); } }
*1:len = in.read(buf