gpt4 book ai didi

java - 将字节数组转换为 PublicKey java 时出错

转载 作者:行者123 更新时间:2023-12-01 06:10:02 28 4
gpt4 key购买 nike

在尝试将 byte[] 数组转换为 PublicKey 时出现错误:

Exception in thread "main" java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: short read of DER octet string at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(Unknown Source) at java.security.KeyFactory.generatePublic(Unknown Source)

这是给我这个错误的代码的一部分:

byte[] publicKeyBytes = keystring.getBytes();
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(publicKeyBytes);
PublicKey publicKey2 = keyFactory.generatePublic(publicKeySpec);

之前检查过,我从字符串中获取的 byte[] 数组与原始数组相同。谢谢

最佳答案

根据您的评论,您使用默认编码将编码公钥的字节直接转换为String,这肯定会删除/替换一些字节。请参阅 JavaDoc new String(bytes[]) .

因此 pair.getPublic().getEncoded()keystring.getBytes() 的内容不会相同。

使用合适的传输编码,例如 Base64 。在 Java 8 上,您可以使用 java.util.Base64为此,在旧平台上 Apache Commons Codec's Base64可以使用类。

关于java - 将字节数组转换为 PublicKey java 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36630232/

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