2017-01-27 2 views
-1

16 진수 값을 Base64로 변환하고 실패한 몇 가지 예제를 웹을 통해 분석하려고했습니다. 16 진수에서 16 진수로 변환

http://tomeko.net/online_tools/hex_to_base64.php?lang=en

Hex to Base64 convertion

은 내가 AWS 객체와 구글 클라우드 스토리지 MD5 값의 ETAG 값을 비교해야합니다. base64(eTag)=GCS_MD5. eTag:6a95b4dd5419f2ffb9f655309c931cb0MD5:apW03VQZ8v+59lUwnJMcsA== 16 진수를 Base64로 변환하려면 어떻게해야합니까?

나는 stack-overflow에서 다양한 예제를 시도했지만 여전히 그렇게 할 수 없었다.

public static void main(String[] args) throws IOException { 
    String hexadecimal = "6a95b4dd5419f2ffb9f655309c931cb0"; 
    System.out.println("hexadecimal: " + hexadecimal); 
    String binaryNum = hexToBin(hexadecimal); 
    System.out.println("" + binaryNum + ", length:" + binaryNum.length()); 
    byte[] encoded = Base64.encodeBase64(binaryNum.getBytes()); 
    byte[] decoded = Base64.decodeBase64(binaryNum.getBytes()); 
    System.out.println("encoded: " + Base64.isBase64(encoded)); 
    System.out.println("decoded: " + Base64.isBase64(decoded)); 
    System.out.println(Arrays.toString(encoded)); 
    String encodedString = new String(encoded); 
    System.out.println(binaryNum + " = " + encodedString); 

    String decodedString = new String(decoded); 
    System.out.println(binaryNum + " = " + decodedString); 

    System.out.println("ByteEncoding::" + base64Encode(binaryNum.getBytes())); 
    System.out.println("ByteDecoding::" + base64Decode(binaryNum)); 
} 

답변

2

, 여기에 (결국) base64로 문자열에 16 진수 문자열로 변환 몇 가지 간단한 코드입니다 (표준 Base64로 클래스가 다른 방법이 있기 때문에, 가정 아파치 코 몬즈 Base64로)를 사용하는 것 같은 라이브러리를 사용하여 , base64로 인코딩되어 있는지 확인하십시오. 그것은 당신이 준 같은 base64로 값으로 변환하고, 그 링크 된 컨버터 출력 :

import java.math.BigInteger; 
import org.apache.commons.codec.binary.Base64; 

public class Main { 
    public static void main(String... args) { 
    String hexadecimal = "6a95b4dd5419f2ffb9f655309c931cb0"; 
    System.out.println("hexadecimal: " + hexadecimal); 

    BigInteger bigint = new BigInteger(hexadecimal, 16); 

    StringBuilder sb = new StringBuilder(); 
    byte[] ba = Base64.encodeInteger(bigint); 
    for (byte b : ba) { 
     sb.append((char)b); 
    } 
    String s = sb.toString(); 
    System.out.println("base64: " + s); 
    System.out.println("encoded: " + Base64.isBase64(s)); 
    } 
} 

//Output: 
//hexadecimal: 6a95b4dd5419f2ffb9f655309c931cb0 
//base64: apW03VQZ8v+59lUwnJMcsA== 
//encoded: true 

아파치 Base64로 수입이없는 경우, 그 문제의 원인이 될 수있는 것입니다. 외부 라이브러리이므로 here에서 다운로드하여 IDE의 프로젝트에 추가 한 다음 위 코드에서와 같이 가져와야합니다.

0
byte[] decodedHex = Hex.decodeHex(hex); 
byte[] encodedHexB64 = Base64.codeBase64(decodedHex); 

here

에서
관련 문제