2017-06-20 4 views
1

Ich verwende Google Authenticator für TOTP-Generation und es verwendet eine Base32-codierte Zeichenfolge, um dies zu tun.Konvertieren hexadezimale Zeichenfolge zu Base32 in Java

Das Geheimnis, das ich habe, ist Hex-codiert und ich muss es in Base32 konvertieren, bevor ich es verwenden kann.

Die folgende Seite macht es perfekt, aber ich brauche es in JAVA. : http://tomeko.net/online_tools/hex_to_base32.php?lang=en

Ich bin sehr neu zu Codierung und Decodierung. Irgendwelche Gedanken darüber, wie man das anstellt?

+0

ich zum ersten Mal muss das hex dekodieren und dann in die base 32 konvertieren? – user2013919

+0

Ich muss Hex zu Base32 konvertieren, nicht nur eine Zeichenfolge zu Base32 codieren. Danke – user2013919

+0

Einfachster Ansatz. Sonst solltest du den Algorithmus selbst implementieren – xenteros

Antwort

1

Okay, es war ziemlich einfach. mit Apache Commons Codec Java library Dies ist der Code

String hexToConvert = "446a1837e14bfec34a9q0141a55ec020f73e15f4"; 
byte[] hexData = hexStringToByteArray(hexToConvert);  
Base32 base32 = new Base32(); 
String encodeBase32 = base32.encodeAsString(hexData); 
System.out.println("Base 32 String: " + encodeBase32); 

Helper Funktion Alles, was ich tun musste, war das Hex zu einem byte [] Array zu dekodieren und dann Base32 kodieren: Das ist von Convert a string representation of a hex dump to a byte array using Java?

public static byte[] hexStringToByteArray(String s) { 
    int len = s.length(); 
    byte[] data = new byte[len/2]; 
    for (int i = 0; i < len; i += 2) { 
     data[i/2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) 
          + Character.digit(s.charAt(i+1), 16)); 
    } 
    return data; 
} 
Verwandte Themen