gpt4 book ai didi

java-8 - 在代码中硬编码公钥而不是从 public.der 中挑选它

转载 作者:行者123 更新时间:2023-12-01 11:12:27 25 4
gpt4 key购买 nike

我使用 openssl 创建了 public.derprivate.der。我需要将生成的公钥硬编码到代码中,而不是从 public.der 文件中读取该 key 。当我将文件中的 key 读入 byte[] 并打印该字节数组时,我得到类似 "[B@74a14482" 的输出。我可以通过从文件中读取 key 来运行程序,但是执行需要时间,所以我想将 key 直接硬编码到程序中。我有以下功能

public PublicKey readPublicKey(String filename) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException, URISyntaxException {
String str = "[B@74a14482";
byte[] b = str.getBytes();
X509EncodedKeySpec publicSpec = new X509EncodedKeySpec(b);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");

return keyFactory.generatePublic(publicSpec);
}

但它给我的错误是

java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: Detect premature EOF

我提到了 to this然后运行,但我得到了同样的错误。

打印字节数组的代码:

public byte[] readFileBytes(String filename) throws IOException, URISyntaxException {

return ByteStreams.toByteArray(ResourceLoader.loadFile(filename));
}

public PublicKey readPublicKey(String filename) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException, URISyntaxException {
System.out.println(readFileBytes(filename));
String str = "[B@74a14482";

byte[] keyBytes;
keyBytes = (new BASE64Decoder()).decodeBuffer(str);
X509EncodedKeySpec publicSpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");

return keyFactory.generatePublic(publicSpec);
}

你能帮我解决这个问题吗?我哪里错了。

最佳答案

正如@michalk 所指出的,您打印的是应用于字节数组的 toString() 方法的结果。此方法不打印数组的内容。

另一个问题是并不是所有的字节都可以转换为可打印的字符。

我建议使用 Base64 来生成 key ,这将为您提供 key 的可打印版本。然后你可以在使用它之前解码这个字符串。

打印文件内容

byte [] keyBytes = readFileBytes(filename);
String keyString = Base64.getEncoder().encodeToString(key);
System.out.println(keyString);

解码字符串中的 key

byte[] keyBytes = Base64.getDecoder().decode(keyString);

(而不是 keyBytes = (new BASE64Decoder()).decodeBuffer(str);)

关于java-8 - 在代码中硬编码公钥而不是从 public.der 中挑选它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58430166/

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