【发布时间】:2020-10-04 22:15:15
【问题描述】:
我正在使用java代码生成CSR,我从在线网站journaldev.com获取代码
public byte[] generateCSR(final String sigAlg, final PublicKey publicKey, final PrivateKey
privateKey, final String organisationUrl) {
final ByteArrayOutputStream outStream = new ByteArrayOutputStream();
final PrintStream printStream = new PrintStream(outStream);
final X500Name x500Name = new X500Name("CN=" + organisationUrl);
final Signature signature = Signature.getInstance(sigAlg);
signature.initSign(privateKey);
final PKCS10 pkcs10 = new PKCS10(publicKey);
pkcs10.encodeAndSign(x500Name, signature);
pkcs10.print(printStream);
return outStream.toByteArray();
如您所见,上面我使用了 printStream 构造函数,它以 ByteArrayOutputStream 作为参数。因为那个声纳说不要使用这个构造函数,因为那个构造函数将使用系统的默认字符集,任何人都知道我该如何解决这个问题?
我已经尝试过作为替代代码:
final Writer writer = new OutputStreamWriter(outStream, StandardCharsets.UTF_8);
final OutputStream out = new WriterOutputStream(writer,StandardCharsets.UTF_8);
final PrintStream printStream = new PrintStream(out, Boolean.FALSE, "UTF-8");
此代码运行,但返回一个空结果。你能帮我解决这个问题吗?
【问题讨论】:
标签: java sonarqube pkcs#11 csr printstream