gpt4 book ai didi

java - 将 x509Certificate 转换为 byte[] 并反转

转载 作者:行者123 更新时间:2023-12-03 22:55:24 24 4
gpt4 key购买 nike

我会将 X509Certificate 转换为 byte[] 或 String,然后从 byte 获取 X509Certificate。
我用过这个代码

X509Certificate x509cert=Helper.saveCertificate(workgroupId, serialNumber);


//x509 to byte[]
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(bos);
out.writeObject(x509cert);
CertificateSerialization certificateSerialization=new CertificateSerialization();
certificateSerialization.setCertificateByte(bos.toByteArray());
bos.close();
return handleResult(certificateSerialization);

并通过此方法恢复它:
byte[] x509cert=certificateSerialization.getCertificateByte();

//from byte to x509
ByteArrayInputStream bis = new ByteArrayInputStream(x509cert);
ObjectInput in = new ObjectInputStream(bis);
X509Certificate cert = (X509Certificate) in.readObject();
bis.close();
response.setResult(cert);

但是当我分析返回的 x509 时,这与原始证书不同。你认为有错误吗?
提前致谢

最佳答案

使用 String 我解决了我的问题,特别是我使用了以下代码:
将我的 x509Certificate 转换为字符串

Base64 encoder = new Base64(64);
String cert_begin = "-----BEGIN CERTIFICATE-----\n";
String end_cert = "-----END CERTIFICATE-----";
byte[] derCert = x509cert.getEncoded();
String pemCertPre = new String(encoder.encode(derCert));
String pemCert = cert_begin + pemCertPre + end_cert;
return pemCert;

将此字符串转换为 x509:
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
String pem=//PEM STRING
X509Certificate cert = null;
StringReader reader = new StringReader(pem);
PEMReader pr = new PEMReader(reader);
cert = (X509Certificate)pr.readObject();
pr.close();

关于java - 将 x509Certificate 转换为 byte[] 并反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28064384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com