我正在尝试使用BouncyCastle类来加密和解密密码.我编写了一个测试程序,并以PEM格式和DER格式生成了测试密钥/证书.我可以将密钥/证书读入我的程序并获取公钥并加密值.当我尝试设置解密该值时,我在创建AsymmetricKeyParameter时收到错误"org.bouncycastle.asn1.DLSequence无法转换为org.bouncycastle.asn1.ASN1Integer".似乎当我尝试通过执行cert.getEncoded()从cert中提取数据时,它也会引入标头值.我试着只是读取文件并删除BEGIN和END CERTIFCATE行,以及破折号,这给我带来了同样的错误.我尝试过使用java.security.cert.Certificate以及下面的代码使用的X509Certificate.任何帮助将不胜感激.
我可以上传密钥文件,这对你有帮助,因为它是我在本地机器上生成的测试密钥,一旦我有这个工作就会丢弃.
package com.cds.test;
import java.io.FileInputStream;
import java.io.InputStream;
import java.security.Security;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import org.bouncycastle.crypto.AsymmetricBlockCipher;
import org.bouncycastle.crypto.engines.RSAEngine;
import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
import org.bouncycastle.crypto.util.PrivateKeyFactory;
import org.bouncycastle.crypto.util.PublicKeyFactory;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.util.encoders.Base64;
public class RSAEncryptDecrypt {
public X509Certificate cert = null;
//
public void readCertificate() throws Exception {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
CertificateFactory factory = CertificateFactory.getInstance("X.509", new BouncyCastleProvider());
InputStream fis = new FileInputStream("/opt/temp/keys/openssl_crt.pem");
X509Certificate x509Cert = (X509Certificate) factory.generateCertificate(fis);
this.cert = x509Cert;
System.out.println("issuer: " + x509Cert.getIssuerX500Principal());
}
//
public String encrypt(String inputData) throws Exception {
Security.addProvider(new …Run Code Online (Sandbox Code Playgroud)