gpt4 book ai didi

java - 作为供应商的 Bouncy CaSTLe 与 Bouncy CaSTLe API

转载 作者:行者123 更新时间:2023-11-30 08:01:50 28 4
gpt4 key购买 nike

我有一个案例需要使用 OpenPGP 加密一些文件。我正在使用 Bouncy CaSTLe 这样做。

据我了解,Bouncy CaSTLe 加密可以通过两种方式在 Java 中使用:

  1. 我将 Bouncy CaSTLe 添加为提供商并继续使用标准 Java 库。

  2. 我直接使用 Bouncy CaSTLe 库中指定的类。

我想知道这两种方法的优缺点以及推荐的方法。

此外,如果我使用的是第二种方法,那么为什么我仍然必须添加 Bouncy CaSTLe 作为安全提供程序。如果我不这样做,那么当我执行以下行时会出现“No Such Provider”异常:

PGPEncryptedDataGenerator encGen =
new PGPEncryptedDataGenerator(
new JcePGPDataEncryptorBuilder(PGPEncryptedData.CAST5).setWithIntegrityPacket(withIntegrityCheck).setSecureRandom(
new SecureRandom())
.setProvider("BC"));

最佳答案

As I understand it Bouncy Castle encryption can be used in java in two ways:

  1. I add Bouncy Castle as a provider and continue to use the standard Java libraries.

  2. I use the classes specified in the Bouncy Castle library directly.

I wanted to know the pros and cons of both the ways and which method is recommended.

Java JCA 是一个设计更好、当然文档也更好的 API。它具有更好定义的异常处理、更新的参数处理 (ByteBuffer)。

此外,通过使用提供者抽象,它不仅可以通过基于软件的提供者(例如 Bouncy CaSTLe)得到增强,还可以通过平台功能和硬件提供者得到增强。因此,如果您针对 JCA 进行编程,您将获得更灵活的运行时。

另一方面,轻量级加密 API 是一个相对较低级别的 API,它以结构相对良好的方式提供更多功能。如果您使用它,您基本上是在选择 Bouncy CaSTLe 作为您唯一的功能提供者。 Bouncy CaSTLe 仅包含 Java 代码中的特定实现,这意味着您不会获得(很多)硬件支持。

Bouncy CaSTLe 的轻量级 API 没有管辖权限制(例如 128 位 AES key )。因此,如果您想解决这些限制,您可以将其用于您自己的协议(protocol)(如果您可以下载等效的库,请不要让我开始解释这些限制首先存在的原因没有问题)。

Also if I am using the second approach then why do I still have to add Bouncy Castle as a security provider. If I do not do so then I get a "No Such Provider" exception (...) ?

Bouncy CaSTLe PGP 功能实际上是建立在 JCA 之上的;就这么简单。否则,您将无法使用 Java key 或其他(平台或硬件)加密功能。

许多其他软件组件也假定使用 JCA。您不能简单地将轻量级 API 插入现有协议(protocol)实现中。

关于java - 作为供应商的 Bouncy CaSTLe 与 Bouncy CaSTLe API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37254316/

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