在java中将十六进制字符串转换为Base32

在java中将十六进制字符串转换为Base32,java,hex,decode,base32,Java,Hex,Decode,Base32,我使用GoogleAuthenticator生成TOTP,它使用base32编码字符串来实现 我拥有的秘密是十六进制编码的,在使用它之前我需要将它转换为Base32 下面的站点做得很好,但我需要JAVA版本。 : 我对编码和解码非常陌生。你有什么想法吗 好吧,很简单。我所要做的就是将十六进制解码为byte[]数组,然后使用 这是密码 String hexToConvert = "446a1837e14bfec34a9q0141a55ec020f73e15f4"; byte[] hexData =

我使用GoogleAuthenticator生成TOTP,它使用base32编码字符串来实现

我拥有的秘密是十六进制编码的,在使用它之前我需要将它转换为Base32

下面的站点做得很好,但我需要JAVA版本。 :


我对编码和解码非常陌生。你有什么想法吗

好吧,很简单。我所要做的就是将十六进制解码为byte[]数组,然后使用 这是密码

String hexToConvert = "446a1837e14bfec34a9q0141a55ec020f73e15f4";
byte[] hexData = hexStringToByteArray(hexToConvert);       
Base32 base32 = new Base32();
String encodeBase32 = base32.encodeAsString(hexData);
System.out.println("Base 32 String: " + encodeBase32);
助手函数:这是来自

公共静态字节[]hexStringToByteArray(字符串s){
int len=s.length();
字节[]数据=新字节[len/2];
对于(int i=0;i数据[i/2]=(字节)((字符.数字)(s.charAt(i),16)我首先需要解码十六进制,然后将其转换为Base32?我需要将十六进制转换为Base32,而不仅仅是将字符串编码为Base32。最感谢的方法。否则你应该自己实现算法。我使用了这里提到的方法:,但我无法获得与我在网站上提到的相同的输出。我也尝试过使用这种方法十六进制和静态上的base32编码器没有给我所需的输出。
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;
}