| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
ページの作成:「==Java Base64のデコード== ====MimeUtilityを利用==== [Java]{{category コード片}} <blockquote>Java8から標準ライブラリに含まれた</blockquote…」
==Java Base64のデコード==

====MimeUtilityを利用====
[Java]{{category コード片}}

<blockquote>Java8から標準ライブラリに含まれた</blockquote>

*http://java.sun.com/j2ee/1.4/docs/api/javax/mail/internet/MimeUtility.html

*http://java.sun.com/products/javamail/index.jsp
から、javamail.zip をダウンロード

=====サーブレットフィルターで、Base64エンコードされたBasic認証情報を取得する例=====
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
ByteArrayInputStream bin = null;
BufferedReader br = null;
try {
HttpServletRequest httpReq = (HttpServletRequest)request;

String basicAuthData = httpReq.getHeader("authorization");
String basicAuthBody = basicAuthData.substring(6); // ex 'Basic dG9tY2F0OnRvbWNhdA== '

bin = new ByteArrayInputStream(basicAuthBody.getBytes());
br = new BufferedReader(
new InputStreamReader(MimeUtility.decode(bin,"base64")));

StringBuilder buf = new StringBuilder();
String line = null;
while ((line = br.readLine())!=null) {
buf.append(line);
}
String[] loginInfo = buf.toString().split(":");
} catch (MessagingException e) {
throw new ServletException(e);
} finally {
bin.close();
br.close();
}
filterChain.doFilter(request, response);
}

====InputStreamの内容をBase64にエンコードしたInputStreamに変換する例====

InputStream in = /* 入力元 */
ByteArrayOutputStream baos = new ByteArrayOutputStream();

OutputStream out =MimeUtility.encode(baos, "base64");
IOUtils.copy(in, out);

return new ByteArrayInputStream(baos.toByteArray()); /* 結果 */

====文字列をBase64 エンコードする====
import javax.mail.internet.MimeUtility;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;

/**
* 文字列を BASE64エンコードする
*
* @param source 対象文字列
* @param encode 対象文字列のエンコード(UTF-8,Shift-JISなど)
* @return
*/
public static String encodeBase64(String source, String encode) {
try {

StringBuilder sourceBuf = new StringBuilder(StringUtils.defaultString(source));
int fillCnt = (sourceBuf.toString().length() % 4);
for (int i = 0; i < fillCnt; i++) {
sourceBuf.append(" ");
}

ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStream out = MimeUtility.encode(baos, "base64");
IOUtils.copy(new StringInputStream(sourceBuf.toString(), encode), out);

return (new String(baos.toByteArray(), "iso-8859-1"));

} catch (Exception e) {
return null;
}
}

案内メニュー