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

查找Python Cryptography库中load_der_public_key在Java中的等效实现

Java等效Python load_der_public_key 的实现方案

Java 标准库内置了完全等效的功能,无需额外引入第三方加密库即可实现。

实现步骤

  • 第一步:将 Base64 编码的公钥字符串解码为 DER 格式字节数组(你已掌握 PEM 转 DER 的逻辑,直接处理即可)
  • 第二步:用 X509EncodedKeySpec 封装 DER 格式的公钥字节
  • 第三步:通过对应算法的 KeyFactory 生成公钥对象

完整示例代码

版本1:使用 Java 8+ 内置 Base64(无需额外依赖)

import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;

// 替换为你的Base64编码公钥字符串
String publicKeyB64 = "你的公钥字符串";
// Base64解码得到DER字节
byte[] derPublicKey = Base64.getDecoder().decode(publicKeyB64);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(derPublicKey);
// 公钥算法根据实际情况替换,常用的有RSA、EC(椭圆曲线)、DSA等
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(keySpec);

版本2:使用你现有 commons-codec 依赖实现

import org.apache.commons.codec.binary.Base64;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;

String publicKeyB64 = "你的公钥字符串";
byte[] derPublicKey = Base64.decodeBase64(publicKeyB64);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(derPublicKey);
// 公钥算法根据实际情况替换
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(keySpec);

注意事项

  • KeyFactory.getInstance() 的参数需要和公钥实际的加密算法一致,填错会抛出参数异常
  • 最终生成的 PublicKey 对象可直接用于后续的验签、加密等操作,和 Python load_der_public_key 返回的公钥对象功能完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:48:02