You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何实现与xxd -r -p加openssl base64命令相同的转换效果

实现逻辑说明

先拆解原终端命令的执行步骤,对应Java操作如下:

  • 第一步:把输入的带冒号分隔的十六进制字符串中的所有冒号删除,得到连续的纯十六进制字符序列
  • 第二步:将纯十六进制序列转换为对应的二进制字节数组
  • 第三步:对字节数组执行标准Base64编码,得到最终结果
Java 8+ 原生实现(无第三方依赖)

不需要引入任何外部包,直接用JDK自带工具类即可实现:

import java.util.Base64;

public class HexToBase64Converter {
    public static void main(String[] args) {
        // 原输入的带冒号的十六进制字符串
        String inputHex = "E4:C8:C1:51:1A:58:1E:A6:0A:DF:E0:59:CA:4E:60:66:0B:36:0F:24:EA:76:93:39:61:F7:79:60:B2:2F:DE:B6";
        
        // 移除所有冒号,得到纯十六进制字符串
        String pureHex = inputHex.replaceAll(":", "");
        
        // 十六进制字符串转二进制字节数组
        byte[] byteArray = hexStringToByteArray(pureHex);
        
        // 标准Base64编码得到结果
        String result = Base64.getEncoder().encodeToString(byteArray);
        
        // 输出结果:5MjBURpYHqYK3+BZyk5gZgs2DyTqdpM5Yfd5YLIv3rY=
        System.out.println(result);
    }

    // 十六进制转字节数组工具方法,兼容大小写十六进制字符
    private static byte[] hexStringToByteArray(String hex) {
        int len = hex.length();
        byte[] data = new byte[len / 2];
        for (int i = 0; i < len; i += 2) {
            data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4)
                                 + Character.digit(hex.charAt(i+1), 16));
        }
        return data;
    }
}
可选:Apache Commons Codec简化实现

如果项目已经引入了Commons Codec工具包,可以省略手写十六进制转换方法:

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.Hex;

public class HexToBase64Converter {
    public static void main(String[] args) throws Exception {
        String inputHex = "E4:C8:C1:51:1A:58:1E:A6:0A:DF:E0:59:CA:4E:60:66:0B:36:0F:24:EA:76:93:39:61:F7:79:60:B2:2F:DE:B6";
        String pureHex = inputHex.replaceAll(":", "");
        byte[] byteArray = Hex.decodeHex(pureHex);
        String result = Base64.encodeBase64String(byteArray);
        System.out.println(result);
    }
}

注意事项

不要使用Base64.getUrlEncoder()进行编码,该方法生成的是URL安全格式的Base64,会把+替换为-、/替换为_,和openssl的输出结果不一致。

内容的提问来源于stack exchange,提问作者Oreoluwa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:18:03