- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个案例需要使用 OpenPGP 加密一些文件。我正在使用 Bouncy CaSTLe 这样做。
据我了解,Bouncy CaSTLe 加密可以通过两种方式在 Java 中使用:
我将 Bouncy CaSTLe 添加为提供商并继续使用标准 Java 库。
我直接使用 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:
I add Bouncy Castle as a provider and continue to use the standard Java libraries.
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/
Java 文档说 CompletableFuture:supplyAsync(Supplier supplier)在 ForkJoinPool#commonPool() 中运行任务而 Completa
我正在尝试设置 IVR,或者更具体地说是使用 Asterisk 的自动接线员。除了简单的自动菜单系统之外,我不想要任何花哨的东西,而不是调用分机(现在),如果按下 1,只需调用同一条电话线 (POTS
当我尝试从 Symfony2 项目根运行以下命令时 php bin/vendors install 我收到以下错误: Could not open input file: bin/vendors 我对
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我正在开发一个涉及用户位置检测的 Android 应用程序。我想知道的是,这个 -> LocationManager.GPS_PROVIDER 是如何工作的? 它是使用手机中的 GPS 系统还是使用移
我不知道如何编写代码以在可能的情况下选择网络提供商,或者如果网络不可用则选择 GPS 提供商。我怎样才能改变代码来得到这个。这是我的第一个 Android 应用程序,我尝试这样做但没有成功。 pack
我不是 MySQL 专家,我必须为我的水平设计一个相当复杂的数据库。 我现在面临的问题在于同一个表(公司的宏观类别)中存在供应商-客户关系: 宏表 id name mega_i
我希望至少有人能在这里为我指明正确的方向。 我的业务需要开放式身份验证。 但是,不要使用其他服务,如facebook 或 google 等。 我们有一个成员(member)数据库 - 一个标准的 as
如果我需要一个变量的 ThreadLocal,是否还需要使用 Supplier(也是线程安全的)? 例如,Supplier 是否不需要在这里实现线程安全? private ThreadLocal> m
我在 brunch@1.7.6 没有编译 bower_component css 文件时遇到问题。类似于 Separating app and vendor css in Brunch .只有 css
我正在使用 select2在 angular 项目中(使用自耕农)。 Select2 css 位于以下目录中: bower_components/select2/select2.css bower_c
在我的 Rails 应用程序目录中,vendor/plugins 和 vendor/assets/stylesheets 存在(两者都是空的)。我想创建 javascripts 文件夹。我可以手动创建
我的代码 fragment 是: mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); if
我继承了一个 Hadoop 安装,我很想知道以前的管理员是如何安装它的,它是从哪里来的。我是 Hadoop 的新手,但似乎以前的管理员简单地从源代码安装了 Apache Hadoop(而不是使用 Cl
我是 Ionic 2 的新手,正在尝试学习所有介绍如何添加提供程序的在线教程。 Ionic 似乎更改了生成的应用程序结构。有人可以给我一个例子,说明如何使用当前的 Ionic 2 应用程序结构执行此操
为什么供应商只支持无参数构造函数? 如果存在默认构造函数,我可以这样做: create(Foo::new) 但是如果唯一的构造函数需要一个字符串,我必须这样做: create(() -> new Fo
我已经通过 docker-compose 构建了一个容器,这里是 .yml: gateway: build: . image: sng container_name: sn
虽然不是直接的编程问题,但我想我可以在这里找到最佳答案。 为什么 USB-IF 监管供应商 ID 的使用并出售它们? 想要编写开源驱动程序的人或想要 2,000 美元会产生巨大影响的小公司会发生什
我正在使用 laravel-analytics ( https://github.com/spatie/laravel-analytics/ ) 并已在本地安装了所有内容,工作正常。 但是,每当我尝试
有没有一种方法/测试工作流程 - 如果我想从 gui 读取字符串内容并将其放入 ArrayList 中,然后将其写入 .xlsx 文件并使用该文件作为数据提供程序。如果是的话,我可以获得它的@test
我是一名优秀的程序员,十分优秀!