问题标签 [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.

0 投票
3 回答
3690 浏览

java - Java - 通过套接字发送证书

我需要使用套接字将 v3certificate 从服务器发送到客户端。为此:服务器端,我生成一个使用 base64.encode 编码的证书,然后将其发送给客户端。客户端,我收到包含证书的字符串,

服务器代码:

客户端代码

几乎一切正常,在客户端,如果我打印收到的字符串,我会得到一个包含额外字符和证书数据的文本。但是在客户端创建证书时它给了我一个错误。这是错误:

java.security.cert.CertificateException: java.io.IOException: DER length more than 4 bytes: 111 at org.bouncycastle.jce.provider.JDKX509CertificateFactory.engineGenerateCertificate(Unknown Source) at java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:322)

这就是它的来源

任何人都可以帮助我吗?

提前致谢

0 投票
1 回答
461 浏览

java - Android和服务器之间的密钥不同

我正在使用 hotp 算法(RFC 4226)开发一次性密码应用程序。我有一个用于 otp 生成的 Android 应用程序(通过模拟器)和一个用于验证的服务器端应用程序。就其本身而言,两者都工作正常并通过了测试。

但是,我在我的设备上生成的密钥与我在服务器上生成的密钥不同,即使输入是硬编码的并且它们之间是相同的。这导致在设备和服务器上生成不同的一次性密码,这破坏了我生成有效一次性密码的能力。我试图弄清楚为什么会发生这种情况,如果有什么我可以做的。

服务器和设备模拟器之间的代码是相同的,用于构建 SecretKeys 并从密钥生成一次性密码。我检查了设备和服务器上 keyspecs 中的字节,它们是相同的。但是,当我从 secretKey.getEncoded() 中查看字节时,由 SecretKeyFactories(均来自 DESedeKeySpecs)生成的密钥存在细微的差异。如果我使用 DES 而不是三重 DES,我会看到类似的差异。

有趣的是,在我的Android项目中,KeySpec和生成的SecretKey中的字节是一致的(虽然被截断了),但是在服务器上,KeySpec和生成的SecretKey之间的字节偶尔会出现一对一的差异。这是正常的吗?我在使用 DES 和三重 DES 时阅读了一些关于奇偶校验位更改的内容,所以我不确定这是否是一个问题。

我也知道 Android 使用的是 Bouncy Castle,但我的服务器使用的是 SunJCE。我的理解是这不应该出现问题,我想知道这是否是使用两个不同提供程序时的已知事件。我获得 Bouncy Castle 服务器端的能力非常有限。

请给点建议和启示?

0 投票
2 回答
7640 浏览

c# - .Net 中的 Bouncy Castle AES 256 加密文档?

我正在尝试在 .Net 项目中实现 Bouncy Castle 加密库,但没有找到很多与 .Net 相关的文档。类/方法结构甚至与大量的 Java 相关示例都不相近。

有没有人为此提供一些好的.Net示例?

谢谢。

0 投票
1 回答
1426 浏览

security - 寻找解释 PGP 签名和加密文件内部结构的模型

我正在尝试使用 BouncyCastle 调试和扩展现有的一段 Java 代码来解密和验证安全附件。

我查看了 BouncyCastle 样本,但更难从中提取的是 PGP 保护附件的模型。从代码和各种错误中我可以推断出有一个 PGPMarker 表示的东西,然后你可以找到一个 PGPCompressedData 里面有一个 PGPOnePassSignatureList 等等。这并没有阐明诸如何时期望一个与另一个以及在单独执行签名和加密时是否存在一次性签名等问题(这些是我遇到的示例,但不是问题的主题)。BC 的 javadoc 并没有解释太多(例如,PGPOnePassSignature是“一次通过签名对象”)。

通过反复试验对模型进行逆向工程非常耗时,而且由于我还没有成功地在谷歌上搜索到一个很好的资源,我希望也许其他人知道。

提前致谢。

0 投票
3 回答
17612 浏览

java - 在 java 中将 PKCS#8 私钥转换为 PEM

大家好,我正在尝试将我在 java 程序中生成的 PKCS#8 私钥转换为 PEM 编码文件。

运行程序后,我拥有两种格式的私钥和一个公钥(代码未显示为有效)。然后我使用这个 openssl 命令将 private.key 转换回 pem 格式的文件。

当我比较 private.pem 和 private2.pem 时,它们是不同的,很明显,当我尝试使用 private.pem 时,它说它不是有效文件。

为了将此私钥正确转换为我需要的 PEM 格式,我缺少什么步骤?我不能在我的程序中使用 OpenSSL,否则我会简单地添加该函数调用。我可以在这个程序中访问 BouncyCastle 库,所以也许它有一个我忽略的解决方案。

0 投票
6 回答
24302 浏览

c# - 在根中插入证书(带私钥),LocalMachine 证书存储在 .NET 4 中失败

我在本地机器的根证书存储中插入带有私钥的新 CA 证书时遇到问题。

这就是发生的事情:

证书被插入,看起来很花哨:(看!)注意它说它有一个私钥

注意:是说它有一个私钥。

所以你会说可以用FindPrivateKey找到它

它很可爱....但它是错误的!(2只笨狗参考)

证书导出对话框给了我这个非常好的信息: 替代文字

此代码在使用此代码段冒充管理员时运行:单击此处

我只是想知道为什么?

(在 Windows Server 2008 R2 和 Windows 7 上测试)

我完蛋了!

当我将它编译到 v3.5 时它可以工作!!!!

该怎么办?

0 投票
1 回答
3512 浏览

c# - BouncyCastle 解密有效,但加密无效?

我从需要解密的外部服务获取加密字符串,然后使用BouncyCastle API重新加密。

我设法让解密工作正常,但加密似乎不起作用。当我尝试解密由我的加密方法生成的字符串时,我收到一条InvalidCipherTextException消息“未知块类型”。

这是我的解密代码,它成功地解密了我正在与之交互的服务中的文本:

这是我的加密方法,它似乎不会生成我的解密方法可以处理的加密字符串:

我不确定我缺少什么来完成这项工作。有什么明显的我似乎在这里失踪了吗?

0 投票
2 回答
37326 浏览

c# - 是否可以仅使用 C# 以编程方式生成 X509 证书?

我们正在尝试使用 C# 和BouncyCastle库以编程方式生成 X509 证书(包括私钥) 。我们已经尝试使用Felix Kollmann 这个示例中的一些代码,但是证书的私钥部分返回 null。代码和单元测试如下:

单元测试:

0 投票
1 回答
833 浏览

java - 使用 Bouncy Castle Crypto 解密时出现非法参数异常

任何人都可以指出我正确的方向。我不确定为什么在解密密钥时会收到非法参数异常。这曾经在早些时候起作用。这是堆栈跟踪。

0 投票
1 回答
1648 浏览

java - 为什么桌面 AES 文件 IO 与 Android AES 文件 IO 不兼容?

我已将一个应用程序从 Android 移植到桌面,该应用程序使用 AES 加密一些私人数据。两个应用程序都能够加密和解密数据以供自己使用,但无法解密其他应用程序数据。AES 密钥、IV 和算法是相同的。这两个应用程序之间的主要区别在于 android-sdk 附带的 BouncyCastle 提供程序已经添加到安全性中,而桌面应用程序需要

安卓应用:

桌面应用: