问题标签 [bouncycastle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何在 AES 和 PBE 中使用 Bouncy Castle 轻量级 API
我有一个使用 JCE 算法“PBEWithSHA256And256BitAES-CBC-BC”创建的密文块。提供者是 BouncyCastle。我想做的是使用 BouncyCastle 轻量级 API 解密这个密文。我不想使用 JCE,因为这需要安装 Unlimited Strength Jurisdiction Policy Files。
在将 BC 与 PBE 和 AES 结合使用时,文档似乎很少。
这是我到目前为止所拥有的。解密代码无异常运行,但返回垃圾。
加密代码,
解密代码,
c# - 仅使用 C、指数和模数的 RSA 解密
我正在尝试使用 RSACryptoServiceProvider 解密,但我只有模数和 d 对作为私钥和指数。
RsaParameters 结构不会使用这些。它在解密时拒绝我,但有一个例外“坏密钥”。
据我了解,这对足以在没有整个 DQ DP INVERSEQ 部分的情况下解密。此外,在我发现的带有 pyCrypto 的 python 示例中,它有一个 RSA.construct 方法,只需要上述部分。
.NET 框架或其他库中的类是否可能?我试过 BountyCastle 但没有运气。
java - 如何在 java 中使用 bouncycastle 将 PrivateKeyUsage 扩展添加到证书?
我有一个 X509Certificate 我想添加扩展...我想添加 PrivateKeyUsage 扩展,但我不知道如何创建 PrivateKeyUsage 对象或如何给它 notBefore & notAfter 值...谢谢
java - 使用轻量级 API 生成 Bouncy Castle RSA 密钥对
令人惊讶的是,Web 上关于使用 Bouncy Castle 的轻量级 API 的信息非常少。看了一会儿后,我整理了一个基本的例子:
我对 RSA 和幕后发生的数学有基本的了解,所以我了解什么publicExponent
和strength
是什么。我认为只要使用适当的填充,它publicExponent
指的是我收集的互质数,它可以很小(如 3)。phi(pq)
但是,我不知道certainty
指的是什么(有些地方提到它可能指的是百分比,但我想确定一下)。的使用SecureRandom
是不言自明的。RSAKeyGenerationParameters的文档完全没有价值(这并不奇怪)。我唯一的猜测是它与生成的密钥的准确性有关,但我想再次确定。certainty
所以我的问题是什么是合适的值publicExponent
?
PS 请不要回复“这取决于上下文 - 您希望信息有多安全”。除非另有说明,否则假设最高级别的安全性(即 4096 位 RSA 密钥或更高)是相当安全的......我也很感谢提供使用 Bouncy Castle 轻量级 API 的良好示例的资源链接(我不在所有人都对 JCA 实现或与之相关的任何示例感兴趣)。
java - PKCS10CertificationRequest 在 android 上创建
我对android和java都很陌生,所以希望我在这里遗漏了一些简单的东西。我要做的就是创建一个简单的 PKCS10 证书签名请求。我有一些代码可以在我的 ubuntu 机器(java-6-openjdk)上编译和运行,但会在 android 模拟器中引发空指针异常:
在调试器中,我可以看到我显然已经构建了一个 PKCS10CertificationRequest,但是我不能用它做任何事情(比如 getEncoded() 甚至 toString())而不会出错。当我调用 getEncoded() 时,它在 android 模拟器上失败;这是堆栈跟踪:
我已经在 API 级别 7 和 8 上进行了尝试。我知道我可以发布大量其他关于我系统各个组件版本的详细信息。就像我说的,我是新手,所以现在我更多的是寻找一个方向,而不是最终的答案。
非常感谢,
亚当麦克勒
java - 如何正确使用 Bouncy Castle 的 OAEPEncoding for RSA(轻量级 API)
我一直在玩 Bouncy Castle 的 RSA(轻量级 API)实现,并弄清了基础知识。查看他们的 JCE 提供程序实现规范,我注意到不同的填充方案可以与 RSA 一起使用。据我了解,默认情况下使用空填充。所以我开始探索 OAEP 填充,特别是OAEPWithSHA512AndMGF1Padding
. 用谷歌搜索不是很有帮助,所以我开始挖掘 BC 的源代码并找到org.bouncycastle.jce.provider.JCERSACipher
类。但是看的initFromSpec
很快就让我头疼了……具体来说,我不明白最后两个可以传递给OAEPEncoding
构造函数的参数是什么。根据 BC 的 API OAEPEncoding
,允许四个参数的构造函数接受Digest mgf1Hash
和byte[] encodingParams
作为最后两个参数。这让我很困惑,因为我不知道如何获取掩码生成算法的实例,也不了解称为encodingParams
. 下面的代码中arg3
和的值应该是什么?arg4
java - 在 Java 中通过 SHA-256 哈希字符串
通过环顾这里以及一般的互联网,我找到了Bouncy Castle。我想使用 Bouncy Castle(或其他一些免费提供的实用程序)在 Java 中生成字符串的 SHA-256 哈希。查看他们的文档,我似乎找不到任何我想做的好例子。这里有人可以帮我吗?
java - 从 DEROctetString 到 KeyUsage
在bouncycastle 中,我可以从 KeyUsage 开始创建一个 DEROctetString。
那么如何从 DEROctetString 获取 KeyUsage 呢?
例子:
我需要这个,因为我能够使用 KeyUsage 扩展请求创建证书请求,但是,仅考虑到证书请求,我无法取回 KeyUsage 扩展。
c# - 使用 C# AesCryptoServiceProvider 加密数据,使用 BouncyCastle AesFastEngine 加密
我需要使用标准 C# AesCryptoServiceProvider 解密数据,该数据在 Java 端使用 Bouncy Castle AesFastEngine 加密。(使用Bounca Castle的c#实现解密数据没问题)
有没有办法做到这一点?
我没有找到在 Bouncy Castle 实施中使用的 IV……有吗?
任何帮助都会很好!马库斯
编辑:
以下代码用于初始化 AesFastEngine:
编辑:
您好 Grec,感谢您的回答,但它仍然无法正常工作...我有一个示例解决方案可在此处下载。
如果您单击两个按钮,您已经获得了一个不同的加密数组......???解密用充气城堡产生的数组会导致异常,说加密数据的长度无效......
这是我为解密编写的代码:
编辑:
越来越接近!RijndaelManaged managed 正在工作,但它给了我一个字节的加密数据。所有其他字节都相同...我尝试了很多,但我不知道如何使用充气城堡获取最后一个字节...如果没有最后一个字节,则无法使用 RijndaelManaged 解密数据...
java - 在 Java 中验证 PKCS#7 证书
在 Java 中需要一些有关加密例程的帮助。
给定 PKCS#7 签名,我想根据受信任的存储验证它包含的所有证书。我假设签名中包含的所有证书都以正确的顺序形成有效的证书路径(或链,等等),所以
- topmost (#0) 是签名证书;
- 下一个(#1)是中间证书,用于签署#0;
- 下一个(#2)是另一个中间证书,用于签署#1;
- 等等。
最后一个证书 (#N) 由 CA 签名。
到目前为止,这就是我设法破解的:
所以问题是——如何使用标准的 Java 类CertPath
和朋友来做到这一点?我有一种强烈的感觉,我正在重新发明一辆自行车。或者,如果有人有 BouncyCastle 库的示例,那也可以。
额外问题:如何根据受信任的存储验证证书以便自动选择根证书?