查找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对象可直接用于后续的验签、加密等操作,和 Pythonload_der_public_key返回的公钥对象功能完全一致
内容的提问来源于stack exchange,提问作者mbrc
相关产品推荐
相关产品推荐

