问题标签 [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 投票
1 回答
4266 浏览

java-me - J2ME AES 解密错误(org.bouncycastle.crypto.InvalidCipherTextException:垫块损坏)

我正在使用带有充气城堡的 AES 算法进行加密和解密

我的加密和解密工作正常,但是当我的纯文本大小更大时它会给我错误

甚至有时它会提供未解密的数据

加密:

解密:

这个解密给了我以下错误

可能是什么问题呢 ?

0 投票
3 回答
4242 浏览

java - 升级到 1.45 时出现 BouncyCastle AES 错误

最近从 BC 1.34 升级到 1.45。我正在使用以下内容解码一些先前编码的数据:

使用 BC 1.45 时,我得到了这个异常:

编辑:有关此问题的更多信息。我正在使用以下内容从密码短语生成原始密钥:

我发现这导致 BC 1.34 和 1.45 有两个不同的值。

它也可能与 BouncyCastle 无关(我正在 Android 2.3 上进行测试)

0 投票
1 回答
616 浏览

encryption - j2me 的充气城堡提供程序 jar

我是加密和 j2me 的新手。这可能是一个愚蠢的问题,但我在哪里可以从 bouncy castle 获得一个供应商来与 j9 vm 一起使用?是不是和 jdk4,5,6 的一样(比如 bcprov-jdk16-145.jar)?我很困惑,因为正如我在 bouncycastle 的网站上看到的,对于 j2me,只有轻量级 api,但没有提供程序 api。

0 投票
2 回答
1724 浏览

java - 给定 n 和 e 的 Java 中的 RSA

我的应用程序接收到公共 RSA 密钥(n 和 e)的原始片段,并且需要使用它们来加密密文。我一直在尝试使用 BouncyCastle,但我的代码不起作用。尝试创建 X509EncodedKeySpec 时会出现问题。

谁能帮我搞定这个工作?这是我的代码:

我想真正的问题是 n 和 e 是分开的,我不知道如何组合它们。

0 投票
1 回答
328 浏览

digital-signature - 如何匹配公钥是否相同

我正在使用crypto.signText()CAPICOM签署一些文本。

所以,现在我拥有的是 Base64Encoded 签名文本。

然后我正在使用 BouncyCastle 来验证签名。直到这没关系。

现在我想做的是,

当用户第一次登录系统时,我想验证该签名,然后将 publicKey 存储到数据库中。从下一次登录开始,我想将存储到数据库中的 publicKey 与新获得的签名文本与该用户进行匹配。

如果签名文本中的公钥和存储在数据库中的公钥相同,则只允许用户登录系统。

如何实施?(我正在使用 JAVA 语言)

0 投票
2 回答
2077 浏览

c# - 以编程方式生成 X.509(非自签名)客户端证书

是否可以在不使用 makecert.exe 的情况下在 ASP.NET 中即时生成客户端证书?生成的证书应使用给定的 CA 证书进行签名(特定的 CA 证书保存在文件系统上并在运行时选择)。生成的证书应附加到对另一台服务器的 Web 请求,以便提取数据。

流量:

用户在 IIS 上请求 ASP.NET 页面 -> 使用 ASP.NET 在 IIS 上生成证书 -> 调用附加了证书的另一台服务器 -> 数据返回并显示在用户请求的页面上。

我找不到通过 .NET Framework 进行本机操作的方法,并探索了不同的选项,例如:

提前感谢您的回复。

0 投票
2 回答
7012 浏览

.net - x509 C# 示例?

我一直在逐篇阅读有关 x509 证书创建、签名等的文章,但我还没有找到解决我的问题的方法——想知道是否有人能指出我正确的方向,因为我现在完全糊涂了. 这是我正在尝试做的事情:

对于客户端应用程序:

  1. 生成公钥/私钥对
  2. 将密钥作为 byte[] 获取并将它们存储在文件系统中。
  3. 生成 x509 证书
  4. 生成签名请求

对于服务器应用程序:

  1. 生成公钥/私钥对
  2. 将密钥作为 byte[] 获取并将它们存储在文件系统中。
  3. 创建自签名 X509 证书
  4. 签署客户证书
  5. 验证客户端证书是否由上面 #3 中的自签名证书签名。

我需要在 .Net 中以编程方式完成所有这些操作,并且不需要像 makecert.exe 或 openssl.exe 这样的外部 .exe - 我需要使用进程内库等。

我使用各种库(如 Bouncy Castle、.Net Crypto、openssl 等)进行了一些零碎的工作 - 但我总是遇到障碍,要么缺乏文档,要么无法以字节 [] 的形式获取密钥对,所以我可以坚持他们,等等。要么我让这比现在更难,要么那里严重缺乏文档 - 或两者兼而有之。

我认为之前必须有人这样做过,我非常感谢一些帮助 - 我愿意接受任何和所有建议 - 谢谢!

.. 并且 PKIBlackbox 不是一种选择——它的成本太高了 :(

0 投票
1 回答
2447 浏览

c# - 生成的签名 X.509 客户端证书无效(其 CA 没有证书链)

我使用 Bouncy Castle 生成 X.509 客户端证书,并使用已知的 CA 唱出它们。

首先,我从证书存储中读取 CA 证书,生成客户端证书,使用 CA 对其进行签名。证书验证失败是由于以下问题

无法将证书链构建到受信任的根颁发机构。

据我了解,这是由于证书与 CA 无关。

这是一个代码示例:

0 投票
1 回答
7752 浏览

c# - 使用 BouncyCastle 签署 X509 证书 - 无效的数字签名

可能重复:
生成的签名 X.509 客户端证书无效(其 CA 没有证书链)

我按照以下示例进行操作:

http://www.bouncycastle.org/wiki/display/JA1/X.509+Public+Key+Certificate+and+Certification+Request+Generation

但生成的签名客户端证书在 Windows 中打开时出现以下错误:

“此文件无法用作以下用途:安全证书”

如果我仍然安装它并使用 certmgr 查看它,则证书路径看起来不错 - 我看到我的自签名证书颁发机构(很好,没有问题),但客户端证书具有以下状态:

“此证书的数字签名无效。”

如果我调用 X509Certificate.Verify() 它会引发以下异常:

“提供的公钥不用于证书签名”

然而,我使用的是从 Pkcs10CertificationRequest 中提取的完全相同的公钥,当我调用 Verify() 时,这很好。

有任何想法吗?经过几天的努力,除了最后一个之外,我已经完成了所有工作 - 真正令人困惑的是我的自签名 CA 证书很好。客户端证书发生了一些事情。这是整个代码块:

0 投票
1 回答
4502 浏览

encryption - 传输 RSA 公钥、javaME、充气城堡的问题

我正在将实例消息传递应用程序从 Java 移植到 JavaME,这也实现了密码学。问题是我想将我的公钥发送到服务器。桌面客户端有这个工作的代码:

服务器有这个代码来检索密钥:

现在我查看了 getEncoded 的 API,它说它将密钥的 DER 编码形式作为字节数组返回(http://www.docjar.com/docs/api/sun/s...tml #getEncoded)

我在 JavaME 中的实现是这样的:

但是,当我尝试使用服务器代码检索 JavaME 创建的 DER 编码密钥时,换句话说,当我尝试这样做时:

我明白了

有趣的一点:普通 Java 中的 DER 编码密钥(使用 getencoded() 函数)是一个字节数组,长度为 162 字节,而使用 bouncy castle 的 JavaME 中编码的 SAME 密钥 DER 长度为 140 字节。这两个 DER 编码的密钥不应该具有相同的长度吗?我的意思是它是 DER 编码格式的相同密钥,所以它们应该是相同的。

我究竟做错了什么?


是的,我没有注意到。问题是你知道如何从 bouncyCastle 中的 PublicKey 创建一个 subjectPublickeyInfo 对象吗?我试过了:

ByteArrayInputStream bIn = new ByteArrayInputStream(RSApublickey.toString().getbytes()); SubjectPublicKeyInfo info = new SubjectPublicKeyInfo((ASN1Sequence)new ASN1InputStream(bIn).readObject());

但它没有用。我也试过:

ByteArrayInputStream(RSApublicKeyStructure.getEncoded()); SubjectPublicKeyInfo info = new SubjectPublicKeyInfo((ASN1Sequence)new ASN1InputStream(bIn).readObject());

实际上,我确实希望这不起作用,但我不得不尝试一下。那么如何从 RSAkeyparameters 创建一个 Subjectpublickeyinfo 呢?(我猜这是 bouncy 的城堡 API 的默默无闻的真正亮点之一)

再次感谢您的回复,您提供了很大的帮助。您让我走上了正确的道路。