Mos*_*afa 7 java spring cryptography bouncycastle java-11
我熟悉java中的基本密码学,但对bouncycastle零经验,最近我遇到一个需求,需要从FTP读取加密和签名的文件。
发件人指示我使用bctips电子书来阅读这些加密和签名的文件。我浏览了充气城堡网站的下载页面,但我对很多我无法理解的术语感到困惑,而且我不知道应该使用哪个jar文件。
bcprov我想知道andbcpkix和有什么区别bcfips?
如果有人指出我正确的道路,我会很感激。
Maa*_*wes 21
首先,bcprov包含Java安全提供者以及“轻量级API”。很多时候,这个库被简单地称为“Bouncy Castle”,缩写为首字母缩略词“BC”,作为 Java 中的提供者名称。这些提供程序提供 SPI(服务提供程序实现)或实现类,允许为您的应用程序提供统一 API的Cipher、Signature和类MessageDigest(等)使用特定算法。Mac
Bouncy Castle 库有自己特定的架构和 API。正是这种公共 API 通常被尊称为“轻量级 API”。Bouncy Castle 库将大部分功能提供为使用 Bouncy Castle 提供程序实现注册的服务。这样,可以从通用类(例如Cipher.
该库还包含许多实用程序类,其中一些只是实现提供程序所必需的。所有的实现类都可供用户使用,这意味着轻量级 API 有点迷宫。这也意味着更新有可能会破坏使用轻量级 API 的软件。例如,ASN.1 编码器/解码器的一些更新不向后兼容。
使用 Bouncy Castle 库的主要原因是提供的扩展功能。例如,Bouncy Castle 提供程序提供了许多标准 Java 运行时中不存在的密码。但是,您应该记住,Java 运行时提供的算法可以进行优化以使用 CPU 加速,并且可能会得到更好的测试。因此,在选择它之前,您一定要检查该算法是否不存在于Java提供的算法中。
一个相对较新的发展是在使用 LTS 版本时支持 CPU 硬件加速 - 目前仅在 Linux 上。
bcfips是经过认证的 FIPS 提供商。FIPS 使用 NIST 定义的一组特定算法,bcfips因此包含bcprov. FIPS 在密钥材料销毁等方面也有严格的规定。FIPS 认证相当昂贵且耗时,BC 希望您在使用其 FIPS 提供商时获得支持合同。
如果您的软件需要使用 FIPS 认证的算法实现,您可能需要此库。请注意,它们仍将在软件中实现,因此不会使用 AES 加速等。
现在bcpkix是完全不同的野兽了。它提供对“PKIX/CMS/EAC/PKCS/OCSP/TSP/OPENSSL”协议和容器格式的支持。
存在以下模块:
cert包中)表示“基于 X.509 的公钥基础设施,包含对证书、证书请求、CRL 等的支持;用于 TLS 的证书类型与用于 HTTPS 的证书类型相同,即您的浏览器使用,主包内有一些单独的相关包:
cmc:通过 CMS 进行证书管理dvcs:数据验证和认证服务器协议est:通过安全传输注册.p7文件扩展名),这是定义它的标准。CMS 是一种灵活的描述性格式,即它指示使用哪些算法并有助于密钥管理。它使用 X.509 证书并基于相同的技术。
.p8这增加了对创建和解析具有、.p10/.csr和.12/文件扩展名的文件的支持.pfx。PKIX 库中的operator似乎是一种使用通用接口直接在“轻量级 API”或 JCA 提供的 API 上进行操作的方法(基本上是执行依赖项注入的一种方法)。
如果您需要实现任何更高级别的协议/容器格式,您可以使用此库。其中许多格式都相对较旧,因此您可能正在寻找例如 NaCL 而不是 CMS。也就是说,CMS 当然可以得到保护,并且实现这些协议对于与现有系统(向后)兼容非常有用。
如果我没记错的话,可以在不安装 Bouncy Castle () 提供程序的情况下使用 PKIX 库"BC",除非您使用 Java 运行时中现有提供程序未提供的特定算法。
不幸的是 Bouncy Castle 的文档非常稀疏,大多数包甚至没有解释它们的用途或如何使用它们。也没有大量的 JUnit 测试或演示应用程序。