gpt4 book ai didi

java - 加密后解密不返回原始字节数组?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:18 25 4
gpt4 key购买 nike

我的 Java KeyStore (.jks) 文件中有一个 PrivateKeyEntry 条目。我能够从这个 .jks 文件构建一个 KeyStore 实例,如下所示:

KeyStore keystore = KeyStore.getInstance("JKS");
keystore.load(keystoreFileInputStream, passwordCharArray);

我能够从 keystore 中提取 PrivateKeyPublicKey 实例,如下所示:

PrivateKey privateKey = (PrivateKey) keystore.getKey(alias, passwordCharArray);
PublicKey publicKey = keystore.getCertificate(alias).getPublicKey();

我加密字节数组 inputBytes 如下:

Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedBytes = cipher.doFinal(inputBytes, 0, 128);

我做相反的操作并解密 encryptedBytes 如下:

Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes, 0, 128);

但是,decryptedBytes 中的字节与inputBytes 中的字节明显不同。他们应该是一样的。我做错了什么?!

如果它很重要,我使用 KeyTool 通过 Java KeyStore 文件创建。具体来说,如下命令:

keytool -genkey -alias my_alias -keyalg RSA -keystore my_keystore.jks -keysize 1024

最佳答案

我听从了@Cruncher 的建议并尝试了一个不同的 Java KeyStore (.jks) 文件,看起来这确实是我正在处理的 .jks 文件而不是代码的问题。

我使用 keytool -genkey ... 命令创建了一个新的 .jks 文件,并使用包含的 key 进行加密/解密,返回预期结果。

谢谢大家的指点。欣赏它。

关于java - 加密后解密不返回原始字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22661757/

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