java 구현 Base64 암호화 복호화 알고리즘

Base64는 인터넷에서 가장 흔히 볼 수 있는 8Bit 바이트 코드를 전송하는 인코딩 방식 중 하나로 RFC2045~RFC2049를 보실 수 있습니다. 위에 MIME의 상세한 규범이 있습니다.Base64 인코딩은 HTTP 환경에서 비교적 긴 식별 정보를 전달하는 데 사용됩니다.예를 들어 Java Persistence 시스템 Hibernate에서는 Base64를 사용하여 HTTP 양식과 HTTP GET URL의 매개 변수로 사용할 수 있는 긴 고유 식별자(일반적으로 128-bit의 UUID)를 문자열로 인코딩합니다.다른 응용 프로그램에서도 종종 2진 데이터를 URL (숨겨진 폼 영역 포함) 에 넣기에 적합한 형식으로 인코딩해야 한다.
이때 Base64 인코딩을 사용하면 비교적 간단할 뿐만 아니라 읽을 수도 없다. 즉, 인코딩된 데이터는 육안으로 직접 볼 수 없다는 것이다.
자바의 암호화 방식은 여러 가지가 있습니다. 현재 베이스64 암호화 방식을 공유합니다.

package com.crypt;
 
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
 *  BASE64 
 * @author YUANWEi
 */
public class BASE64 {
  /** 
   * BASE64  
   * 
   * @param key 
   * @return 
   * @throws Exception 
   */ 
  public static byte[] decryptBASE64(String key) throws Exception { 
    return (new BASE64Decoder()).decodeBuffer(key); 
  } 
    
  /** 
   * BASE64  
   * 
   * @param key 
   * @return 
   * @throws Exception 
   */ 
  public static String encryptBASE64(byte[] key) throws Exception { 
    return (new BASE64Encoder()).encodeBuffer(key); 
  } 
}
왜 Base64로 암호화해야 합니까?
Base64 인코딩의 역할: 일부 시스템에서는 ASCII 문자만 사용할 수 있습니다.Base64는 ASCII 문자가 아닌 데이터를 ASCII 문자로 변환하는 방법입니다.그것은 아래 표에 사용된 문자와 인코딩을 사용합니다.
그리고base64는 http,mime 프로토콜에서 데이터를 신속하게 전송하기에 특히 적합하다.
base64는 사실 보안 영역에서의 암호화 해독 알고리즘이 아니다.이른바 base64 암호화 해독을 자주 볼 수 있지만.사실base64는 데이터 내용을 인코딩하여 전송하기에 적합한 인코딩 알고리즘이라고 할 수 있다.베이스64가 인코딩된 후에도 원문은 볼 수 없는 문자 형식으로 바뀌었지만 이런 방식은 매우 초급적이고 간단하다.
Base64 인코딩 방법은 세 개의 8Bit 바이트를 네 개의 6Bit 바이트로 변환해야 한다. 그 중에서 변환된 네 개의 바이트 중 여섯 개의 유효한 바이트는 유효한 데이터이고 나머지 두 개의 바이트는 0으로 보충하여 한 바이트가 된다.따라서 Base64로 인해 데이터의 군더더기가 심각하지 않다. Base64는 현재 비교적 유행하는 인코딩 방법이다. 왜냐하면 인코딩 속도가 빠르고 간단하기 때문이다.
지식 보충:
표준 Base64는 URL에 직접 저장하여 전송하는 데 적합하지 않습니다. URL 인코더는 표준 Base64의 "/"및 "+"문자를 "%XX"와 같은 형식으로 변환하고, ANSI SQL에서'%'번호를 와일드카드로 사용했기 때문입니다.
이 문제를 해결하기 위해 URL을 위한 개선 Base64 인코딩을 사용할 수 있습니다. 이 인코딩은 끝에'='번호를 채우지 않고 표준 Base64의'+'와'/'를 각각'*'와'-'로 바꾸어 URL 인코딩과 데이터베이스 저장에 필요한 변환을 피하고 인코딩 정보의 길이가 이 과정에서 증가하는 것을 피하며 데이터베이스, 폼 등 대상 식별자의 형식을 통일합니다.
"+"및 "/"를 "!"로 변경하는 정규 표현식 개선 Base64 변종이 있습니다.및 "-", "+", "*"및 앞서 IRCu에서 사용된 "["및 "]"는 정규 표현식에서 특별한 의미를 가질 수 있습니다.
"+/"를 "_-"또는 "._"로 변경하는 변종도 있습니다.(프로그래밍 언어의 식별자 이름으로 사용됨) 또는'.-'(XML의 Nmtoken용), 심지어'_:'(XML의 Name용).
Base64는 세 개의 8Bit 바이트를 네 개의 6Bit 바이트(3*8=4*6=24)로 바꾸고 6Bit를 두 개의 고위 0을 추가하여 네 개의 8Bit 바이트를 구성해야 한다. 즉, 전환된 문자열은 이론적으로 원래의 1/3보다 길다는 것이다.
이상은 Base64, Base64 암호화 해독 알고리즘에 관한 모든 내용입니다. 암호화 해독 학습에 도움이 되기를 바랍니다.

좋은 웹페이지 즐겨찾기