gpt4 book ai didi

java - 读取公钥文件并使用该 key 加密另一个文件时出现问题

转载 作者:行者123 更新时间:2023-11-30 05:02:42 28 4
gpt4 key购买 nike

我一直在努力阅读一个公钥文件,我想获取文件中的 key 并用它来加密另一个文件。我正在使用 RSA PKCS1 v1.5 使用 SH1 哈希算法对文件进行加密和签名,但这不是问题,问题是我已经提供了加密时使用的公钥文件,但我似乎无法通过阅读获胜文件并生成 publicKey 对象。

代码如下:

void setPublicKey(String file) 
{
try
{
FileInputStream keyfis = new FileInputStream(file);
byte[] encKey = new byte[keyfis.available()]; keyfis.read(encKey);
keyfis.close();
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(encKey);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
// I get an exception on the below line
publicKey = keyFactory.generatePublic(pubKeySpec);
} catch (Exception e)
{
e.printStackTrace();
}
}

有人可以帮忙吗!!

最佳答案

AFAIK X509 编码 key 是使用 ASN.1 编码的二进制文件。因此,最后关于换行的问题没有任何意义。

如果您有一个文本文件,则您有一个 PEM 编码文件,我目前不确定在这种情况下您必须使用哪个 KeySpec。

您可以将 PEM 编码 key 转换为 DER 编码 key (例如使用 OpenSSL),也可以使用 BouncyCastle作为对加载 PEM 编码 key 的支持。

顺便说一句:使用 keyfis.read(encKey); 很危险,因为 read 方法仅读取 encKey 字节,但并非必须这样做。最好从 InputStream 创建 DataInputStream 并使用 readFully(encKey):

new DataInputStream(keyfis).readFully(encKey);

关于java - 读取公钥文件并使用该 key 加密另一个文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6124310/

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