gpt4 book ai didi

java - 使用公钥-私钥加密

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

我使用 ssh-keygen -t rsa 生成了公钥-私钥

以下是我的公钥

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDtbGPZjdnMWk8lJ/CdaBZROCtNk8H+Ru4keC7DK55q2t2ISRgjBaR4qZnWezAA2iJX3cwq2ulfwCPmyoc0G180lUEMDkZkeuWzyvwWjZIo0cehN2j28evgpZadfe+NxYYqQ2f7/3eJ+3IwT4EE6WmzaYjsYXloilJLVJFBbPkdy+1xnHAa1RXsdDNjMPQ9d9PSdr9BYlph21lzflk5wdBxXnLxzUD3mb3j0cCMrIl7IF2CbkKnBC4VFZahRRyJLBWvXvcxXR7Pspv6/WUE2GsZZ3GynAhS7LuHk7NKmB13+lQFejDGO4yVsXQLw7dg+JsIs4h3JkindgJRUytQq7lZ user@Ganesh-VirtualBox

这是我的代码,它可以让我获得公钥

public static PublicKey getPublicKey(String filename)
throws Exception {

File f = new File(filename);
FileInputStream fis = new FileInputStream(f);
DataInputStream dis = new DataInputStream(fis);
byte[] keyBytes = new byte[(int)f.length()];
dis.readFully(keyBytes);
dis.close();

X509EncodedKeySpec spec =
new X509EncodedKeySpec(keyBytes);
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePublic(spec);
}

我正在将正确的文件名传递给此方法。 kf.generatePublic(spec) 行抛出错误,如下所示。

Exception in thread "main" java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: invalid key format
at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:205)
at java.security.KeyFactory.generatePublic(KeyFactory.java:334)

为什么我会收到此错误?

最佳答案

通常需要 X.509 格式的公钥,需要 PKCS#8 格式的私钥。因此,每当您处理公钥/私钥时,您都需要确保它们采用适当的格式。

阅读以下内容 Oracle docs

So, first you need a key specification. You can obtain one via the following, assuming that the key was encoded according to the X.509 standard, which is the case, for example, if the key was generated with the built-in DSA key-pair generator supplied by the SUN provider:

您遇到的主要错误是InvalidKeyException,其中 says :

This is the exception for invalid Keys (invalid encoding, wrong length, uninitialized, etc).

现在,在您的情况下,是无效的编码导致了此错误,因为您使用的是明文生成的公钥,并且未使其与 X509EncodedKeySpec 兼容。因此,要解决您的问题,首先按照 X.509 标准对您的公钥进行编码,以便您可以在 X509EncodedKeySpec

中使用

关于java - 使用公钥-私钥加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32583673/

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