gpt4 book ai didi

encryption - 如何通过 java 的加密扩展加密 PGP 消息?

转载 作者:行者123 更新时间:2023-11-30 06:58:44 26 4
gpt4 key购买 nike

目前,我正在使用充气城堡的库进行实际工作,并在 sloanseaman.com 上找到了一个示例,该示例(经过一些调整后)适用于 v1.52。

我还从 developer.com 获得了一个工作示例,说明如何使用 JCE 接口(interface),甚至可以将 bcprov 放入其中并使用其中的一些算法。

public class CryptoUtil {
private static final String ALGORITHM = "IDEA/PGP/NoPadding";

public static void encryptFile(File keyFile, File plainTextFile, File encryptedFile) throws GeneralSecurityException, IOException {
Cipher desCipher = Cipher.getInstance(ALGORITHM);
desCipher.init(Cipher.ENCRYPT_MODE, readKeyFromFile(keyFile));
OutputStream out = new BufferedOutputStream(new FileOutputStream(encryptedFile));
InputStream in = new BufferedInputStream(new FileInputStream(plainTextFile));
while (in.available() > 0) {
// Read the next chunk of bytes...
byte[] cleartextBytes = new byte[in.available()];
in.read(cleartextBytes);
// Now, encrypt them and write them to the encrypted file...
byte[] encryptedBytes = desCipher.update(cleartextBytes);
out.write(encryptedBytes, 0, encryptedBytes.length);
}
// Take care of any pending padding operations
out.write(desCipher.doFinal());
in.close();
out.flush();
out.close();

System.out.println("Encrypted to " + encryptedFile);
}

但是无论我使用什么算法字符串,我都无法让我的 JCE 实用程序像 bouncyCaSTLe 实用程序那样加密。

我得到的最深入的是使用“IDEA/PGP/NoPadding”,它允许我在自身内部加密和解密,但 BC 实用程序不会解密它们,说流中有未知对象。

Here是我的源代码

你们知道为此我需要使用什么算法、模式和填充的组合吗?我还需要以某种方式应用其他选项吗?我想我需要使用 BC 版本的 AlgorithmParametersSpi,但我还没有想出如何创建它

最佳答案

你不能。虽然 OpenPGP 使用“正常”的公共(public)/私有(private)和对称加密算法,但问题始于模式。 OpenPGP 使用它自己的模式 ( a modified CFB mode ),并且 Java 的默认库不支持整个 OpenPGP 数据包语法。

您至少需要用 Java 重新实现 OpenPGP CFB 模式,或者以某种方式依赖 Bouncy CaSTLe 的实现。

OpenPGP CFB 模式已经包含了对初始化 vector 的替换;不使用/不需要额外的填充。

关于encryption - 如何通过 java 的加密扩展加密 PGP 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32342191/

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