gpt4 book ai didi

java - 使用 BouncyCaSTLe 轻量级 API 进行 OpenPGP 加密

转载 作者:行者123 更新时间:2023-12-02 03:34:12 32 4
gpt4 key购买 nike

我必须使用 256 位 AES-CBC key 加密某些内容。所遵循的加密协议(protocol)是OpenPGP。由于 key 大小为 256 位,并且公钥/私钥也为 4096 位,因此我必须使用轻量级 API。我发现了几个显示如何使用 256 位 AES-CBC key 进行加密的问题,但我不知道如何将其与 PGP 集成。

最明显的方法是使用 AES 引擎对其进行加密,然后使用公钥对结果进行加密,就像在 OpenPGP 中所做的那样。然而,这需要我生成初始化 vector 和 AES key 。这些是我希望库做的事情,因为在做这些事情时可能会出错。

这是我用来加密的代码示例:

PGPEncryptedDataGenerator encGen = new PGPEncryptedDataGenerator(new JcePGPDataEncryptorBuilder(PGPEncryptedData.AES_256).setWithIntegrityPacket(true).setSecureRandom(rand).setProvider("BC"));
encGen.addMethod(new JcePublicKeyKeyEncryptionMethodGenerator(<PGPPublic Key object>));

OutputStream encryptedOut = encGen.open(out, new byte[BUFFER_SIZE]);

通过查看 open 函数的代码,我确定输入流首先使用 AES-CFB 进行编码(该库处理我在内部提到的初始化 vector 的所有上述问题),然后使用公钥我已经提供了。如何让它改用 AES-CBC?

最佳答案

您的问题主要归结为两个部分 - 使用 AES-256 和切换到 CBC 操作模式。我无法帮助您在 Bouncy CaSTLe 中使用 AES-256,但可以提供有关操作模式的说明。

您不能将 CBC 与 OpenPGP 一起使用。 OpenPGP 规范仅允许special variant of CFB 。如果您需要 CBC,则必须选择其他加密系统;如果将 OpenPGP 消息放在一起更重要,请坚持使用 OpenPGP CFB 模式。如果您在 CBC 模式下创建 OpenPGP 消息,它们不遵循 OpenPGP 的标准,并且其他实现(如 PGP、“普通”BouncyCaSTLe”和 GnuPG)将无法读取该消息。

关于java - 使用 BouncyCaSTLe 轻量级 API 进行 OpenPGP 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37645113/

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