Java에서 BASE64 인코딩 및 디코딩을 수행하는 방법

2590 단어 javabase64인코딩
BASE64와 다른 비슷한 인코딩 알고리즘은 일반적으로 바이너리 데이터를 텍스트 데이터로 변환하는데 그 목적은 저장이나 전송을 간소화하기 위한 것이다.더 구체적으로 말하면 BASE64 알고리즘은 주로 바이너리 데이터를 ASCII 문자열 형식으로 변환하는 데 사용된다.Java 언어는 아주 좋은 BASE64 알고리즘의 실현을 제공합니다.본고는 BASE64를 어떻게 사용하는지, 그리고 그것이 어떻게 작동하는지 간단명료하게 설명할 것이다.
Base64의 역할: 주로 암호화가 아니라 일부 이진수를 일반 문자로 바꾸어 네트워크 전송에 사용하는 것이 주요 용도이다.일부 이진 문자는 전송 프로토콜에서 제어 문자에 속하기 때문에 직접 전송할 수 없기 때문에 바꾸면 된다.
첫 번째 방법:
반사를 통해 자바에서 외부에 공개되지 않는 클래스를 사용합니다.

/*** 
   * encode by Base64 
   */ 
  public static String encodeBase64(byte[]input) throws Exception{ 
    Class clazz=Class.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64"); 
    Method mainMethod= clazz.getMethod("encode", byte[].class); 
    mainMethod.setAccessible(true); 
     Object retObj=mainMethod.invoke(null, new Object[]{input}); 
     return (String)retObj; 
  } 
  /*** 
   * decode by Base64 
   */ 
  public static byte[] decodeBase64(String input) throws Exception{ 
    Class clazz=Class.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64"); 
    Method mainMethod= clazz.getMethod("decode", String.class); 
    mainMethod.setAccessible(true); 
     Object retObj=mainMethod.invoke(null, input); 
     return (byte[])retObj; 
  } 
두 번째 방법:
commons-codec를 사용합니다.jar

/** 
   * @param bytes 
   * @return 
   */ 
  public static byte[] decode(final byte[] bytes) { 
    return Base64.decodeBase64(bytes); 
  } 
 
  /** 
   *  BASE64  
   * 
   * @param bytes 
   * @return 
   * @throws Exception 
   */ 
  public static String encode(final byte[] bytes) { 
    return new String(Base64.encodeBase64(bytes)); 
  } 
세 번째 방법:
 

/** 
  *   
  * @param bstr 
  * @return String 
  */  
  public static String encode(byte[] bstr){  
  return new sun.misc.BASE64Encoder().encode(bstr);  
  }  
  
  /** 
  *   
  * @param str 
  * @return string 
  */  
  public static byte[] decode(String str){  
  byte[] bt = null;  
  try {  
    sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();  
    bt = decoder.decodeBuffer( str );  
  } catch (IOException e) {  
    e.printStackTrace();  
  }  
  
    return bt;  
  }  
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기