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

MyMemoWiki

「Java Base64のデコード」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
1行目: 1行目:
==Java Base64のデコード==
+
==[[Java Base64のデコード]]==
  
 
====MimeUtilityを利用====
 
====MimeUtilityを利用====
[[Java]] | {{category コード片}}
+
[[Java]] | [[Category:コード片]]
  
<blockquote>Java8から標準ライブラリに含まれた</blockquote>
+
<blockquote>[[Java]]8から標準ライブラリに含まれた</blockquote>
  
 
*http://java.sun.com/j2ee/1.4/docs/api/javax/mail/internet/MimeUtility.html
 
*http://java.sun.com/j2ee/1.4/docs/api/javax/mail/internet/MimeUtility.html
12行目: 12行目:
  
 
=====サーブレットフィルターで、Base64エンコードされたBasic認証情報を取得する例=====
 
=====サーブレットフィルターで、Base64エンコードされたBasic認証情報を取得する例=====
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
+
   public void doFilter(Servlet[[R]]equest request, Servlet[[R]]esponse response, FilterChain filterChain) throws IOException, ServletException {
 
     ByteArrayInputStream bin = null;
 
     ByteArrayInputStream bin = null;
     BufferedReader br = null;
+
     Buffered[[R]]eader br = null;
 
     try {
 
     try {
       HttpServletRequest httpReq = (HttpServletRequest)request;
+
       HttpServlet[[R]]equest http[[R]]eq = (HttpServlet[[R]]equest)request;
 
        
 
        
       String basicAuthData = httpReq.getHeader("authorization");
+
       String basicAuthData = httpReq.get[[Header]]("authorization");
       String basicAuthBody = basicAuthData.substring(6); // ex 'Basic dG9tY2F0OnRvbWNhdA== '  
+
       String basicAuthBody = basicAuthData.substring(6); // ex 'Basic dG9tY2F0On[[R]]vbWNhdA== '  
 
        
 
        
 
       bin = new ByteArrayInputStream(basicAuthBody.getBytes());  
 
       bin = new ByteArrayInputStream(basicAuthBody.getBytes());  
       br = new BufferedReader(
+
       br = new Buffered[[R]]eader(
                   new InputStreamReader(MimeUtility.decode(bin,"base64")));
+
                   new InputStream[[R]]eader(MimeUtility.decode(bin,"base64")));
 
        
 
        
 
       StringBuilder buf = new StringBuilder();
 
       StringBuilder buf = new StringBuilder();

2020年2月16日 (日) 04:27時点における最新版

Java Base64のデコード

MimeUtilityを利用

Java |

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

から、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;
    }
}