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

Java解密AWS导出的密码加密私钥时遇DerValue构造异常

解密AWS导出的加密私钥时java.io.IOException: extra data given to DerValue constructor的解决方法

你遇到的异常是因为直接将带PEM头尾标记的私钥字符串传入EncryptedPrivateKeyInfo导致的——这个类要求输入的是DER编码的原始字节数据,而AWS导出的私钥是PEM格式:它是DER数据经过Base64编码后,加上-----BEGIN ENCRYPTED PRIVATE KEY-----和-----END ENCRYPTED PRIVATE KEY-----头尾,再换行分割的文本格式。直接把这种文本转成字节传入,会包含头尾标记、换行符这些无关数据,导致DER解析失败。

修正步骤:

  • 清理PEM字符串:去掉头尾标记行,同时移除所有换行符
  • 将清理后的Base64字符串解码为DER格式的字节数组
  • 用处理后的DER字节初始化EncryptedPrivateKeyInfo

修正后的代码示例:

import java.util.Base64;
import java.security.spec.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;

PrivateKey decryptEncryptedPrivateKey(String pemEncryptedKey, String passwd) {
    try {
        // 清理PEM格式的私钥字符串
        String cleanedKey = pemEncryptedKey
                .replace("-----BEGIN ENCRYPTED PRIVATE KEY-----", "")
                .replace("-----END ENCRYPTED PRIVATE KEY-----", "")
                .replaceAll("\\s+", ""); // 移除所有换行、空格等空白字符

        // Base64解码成DER字节数组
        byte[] derBytes = Base64.getDecoder().decode(cleanedKey);

        // 初始化EncryptedPrivateKeyInfo并解密
        EncryptedPrivateKeyInfo encryptPKInfo = new EncryptedPrivateKeyInfo(derBytes);

        Cipher cipher = Cipher.getInstance(encryptPKInfo.getAlgName());
        PBEKeySpec pbeKeySpec = new PBEKeySpec(passwd.toCharArray());
        SecretKeyFactory secFac = SecretKeyFactory.getInstance(encryptPKInfo.getAlgName());
        Key pbeKey = secFac.generateSecret(pbeKeySpec);
        AlgorithmParameters algParams = encryptPKInfo.getAlgParameters();
        cipher.init(Cipher.DECRYPT_MODE, pbeKey, algParams);
        KeySpec pkcs8KeySpec = encryptPKInfo.getKeySpec(cipher);
        KeyFactory kf = KeyFactory.getInstance("RSA");
        return kf.generatePrivate(pkcs8KeySpec);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

如果你的私钥字符串里包含其他注释或额外换行,replaceAll("\\s+", "")会一并移除所有空白字符,确保Base64解码的正确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:02:42