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

Java转ColdFusion:带密码的加密PEM密钥解密问题

从Java转ColdFusion:解密带密码的PEM私钥问题

我需要把Java中使用OpenSSL解密带密码加密的PEM私钥的逻辑转换为ColdFusion代码,目前已经完成部分转换,但卡在了Java代码中的decryptPrivateKeyInfo调用这一步,当前ColdFusion代码的密钥获取部分无法正常工作。

Java原代码

String privateKeyFile = "test_key.pem";
FileInputStream privateKey = null;
PEMParser pemRd = new PEMParser(new InputStreamReader(privateKey));
Object objectInPemFile = pemRd.readObject();
PKCS8EncryptedPrivateKeyInfo keyInfo = (PKCS8EncryptedPrivateKeyInfo) objectInPemFile;
String pwd = "secret";
InputDecryptorProvider pkcs8Prov = new JceOpenSSLPKCS8DecryptorProviderBuilder().build(pwd.toCharArray());
PrivateKeyInfo privateKeyInfo = keyInfo.decryptPrivateKeyInfo(pkcs8Prov);

无法转换的关键代码

PrivateKeyInfo privateKeyInfo = keyInfo.decryptPrivateKeyInfo(pkcs8Prov);

当前ColdFusion代码(密钥获取部分失效)

privateKeyFile = createObject("java", "java.io.FileReader").init(ExpandPath("test_key.pem") );
privateKey = createObject("java", "org.bouncycastle.openssl.PEMParser").init( privateKeyFile ).readPemObject().getContent();
 
privateKey= toBase64(privateKey);
privateKeyFile.close();

privateKey = privateKey.replaceAll("^-+BEGIN RSA PRIVATE KEY-+", "");
privateKey = privateKey.replaceAll("-+END RSA PRIVATE KEY-+", "");
privateKey = privateKey.replaceAll(chr(10), "").trim();

decryptorProvider = createObject("java", "org.bouncycastle.openssl.jcajce.JceOpenSSLPKCS8DecryptorProviderBuilder").build('secret');

decryptedKeyPair = createObject("java","org.bouncycastle.openssl.PEMEncryptedKeyPair");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:15:38