问题标签 [elliptic-curve]

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 投票
2 回答
1798 浏览

java - Java 6 中的椭圆曲线密码学

默认情况下是否可以在 Java 6 中使用椭圆曲线密码术?我不想使用像 Bouncy castle 这样的第三方提供商。

0 投票
1 回答
2981 浏览

bouncycastle - 访问 PFX 文件 ECC 私钥以在 Java 中生成对称密钥

我正在编写一个程序(在 Java 中使用 Bouncy Castle API),该程序使用 AES-256/GCM 使用由 ONE EC 密钥对生成的密钥来加密文件。我的对称加密部分工作得很好,但现在证明密钥生成很困难。当尝试在 javax.crypto.KeyAgreement.init() 方法中使用 ECPublicKey 对象时,它返回此错误:

该方法的源代码如下:

如何访问证书的 PrivateKey?

**更新:**更新源代码

** 编辑 ** 以下命令和说明可用于创建一些测试文件来演示问题。

0 投票
1 回答
2031 浏览

java - 从 JKS KeyStore 读回 ECPrivateKey

我正在尝试ECPrivateKey从 JKS KeyStore 中读回一个(包括证书链),如下面的代码所示。

Sun/Oracle 安全提供商不支持我使用的曲线,因此我使用的是 Bouncy Castle。BC 插入到我的安全提供者列表中的第 0 位。存储工作正常,回读失败:

显然,JKS KeyStore 实现不会遍历安全提供者列表。但是,这对于 BC:PKCS12BKS. 有没有办法JKS在使用 BC 恢复密钥时用作 KeyStore 类型?

上面代码中使用的createX509Certificate方法由下式给出:

0 投票
1 回答
2227 浏览

php - 如何使用 PHPECC 生成密钥对和加密

0 投票
1 回答
1507 浏览

cryptography - 椭圆曲线示例

我想使用 ECC 来签署消息。我尝试在谷歌搜索,但我无法找到注释代码来了解它是如何工作的。

您是否知道一些文档不仅解释了数学基础,还解释了如何实现它?

0 投票
1 回答
1751 浏览

rsa - 在 .NET 或 BouncyCastle 中确定证书密钥类型(RSA 与 EC)?

目前我们有一个例程,它在给定证书(并且它是私钥)的情况下对字节 [] 进行签名。但是,证书/密钥的类型被硬编码为“带有 RSA 密钥的证书”。该代码是:

我们想让它更加灵活,如果证书使用 RSA 密钥,我们以一种方式处理它,但如果它使用 EC 密钥,那么我们以不同的方式处理它。基本上,加密服务提供者类型将是不同的类型。

所以核心问题是:

  • 给定带有公钥+私钥的证书(用于签名)或仅带有公钥的证书(用于验证),您如何确定证书使用的密钥类型?

我对标准 .NET 库甚至 BouncyCastle.Org 库持开放态度。

0 投票
2 回答
2529 浏览

.net - 什么 ECC 证书适用于以下 PKCS7/CMS 代码?

我们正在使用 PKCS#7 / CMS 数据格式标准来加密/解密/签名/验证敏感负载。目前,我们正在为我们的 PKCS7 / CMS 及其罚款使用 2048 和 4096 位 RSA 证书(和密钥)(请参阅下面的 RSA 工作代码)。

我们希望添加对 ECC(特别是 secp521 曲线)的支持,但 .NET 4.5 对 ECC 的支持参差不齐,尽管它是NSA 套件 B的唯一 PKI 算法(尽管在 256 和 384 主要模数)。

问题

我可以使用哪些与 .NET 4.5 和以下代码兼容的 EC 证书 + 密钥(可能进行一些编辑)?我正在寻找特定的曲线,事实上,通过 OpenSSL(或其他常见或免费工具)创建证书 + 密钥会得到一个非常具体的答案,我们将不胜感激!

RSA -4096 证书 + 密钥的有效简化代码

使用 ECC 证书 + 密钥时的异常

RSA -4096 证书 + 密钥的有效简化代码

使用 ECC 证书 + 密钥时的异常

创建 ECC 证书

我正在使用以下批处理文件来生成我的 ECC 证书,其中一个有代表性的片段是

额外细节

如果您不想(重新)根据上述链接的批处理文件创建证书,这里是证书的转储通过 openssl asn1parse -in test-cert.pem -i -dump

PS:我之前问过一个问题,试图反过来解决问题;在通过 BouncyCastle 进行 ECC PKCS7/CMS 时,得到的拥抱和仙人掌一样多。这个问题采用了一种截然不同的方法......

0 投票
5 回答
7864 浏览

ios - iOS 中的椭圆曲线加密

我正在尝试将 ECC 合并到一个用于安全通信的 iPhone 应用程序中,但我很难找到一个合适的库/教程来说明如何在 Objective-c 中做到这一点。我读了这篇文章: 如何在 iOS 中使用 ECC 但它是在将近一年前发布的,没有任何回应。任何提示/建议将不胜感激

谢谢!

0 投票
1 回答
3526 浏览

openssl - OpenSSL 命令行 secp384r1 / SHA-256 数字签名

是否可以从 OpenSSL 命令行使用 secp384r1 / SHA-256 生成数字签名(我使用的是 1.0.1c 版本)?经过一些实验后,我可以使用 SHA-1 生成签名:

只是给了我一个已知的“-ecdsa-with-SHA256”选项?

提前致谢

0 投票
1 回答
3796 浏览

ios - 从 OpenSSL 和 BouncyCastle 派生的 ECDH 共享密钥并不总是相同,尽管两者的常量和域参数相同

我正在尝试在 iOS 应用程序和 java servlet 之间实现 AES 加密。Java servlet 使用 BouncyCastle 库,而 iOS 应用程序使用 OpenSSL。虽然我在双方都使用了相同的公钥/私钥对和域参数,但 OpenSSL 生成的共享密钥有时与 BouncyCastle 在服务器端生成的不同。

程序如下;

  1. 在服务器中生成的具有指定域参数的公钥/私钥对(例如server_public_key, server_private_key
  2. server_public_keyEC_POINT以X 和 Y的形式嵌入 iOS 应用程序中
  3. 在运行时,iOS 应用程序会生成自己的公钥/私钥对(比如 client_key_curve哪个是EC_KEY),并且
  4. 然后根据 server_public_key 和 client_key_curve加载server_public_key并计算共享密钥 ( ),并且key_agreement
  5. 然后client_public_key(从 中提取client_key_curve)以及使用派生的共享秘密(key_agreement)对称加密的加密消息发送到服务器
  6. client_public_key在服务器端,再次使用与客户端相同的服务器 ECDH 参数计算共享密钥 ,并且
  7. 然后使用计算的加密消息解密key_agreement

但是解密的消息并不总是与客户端发送的消息相同。

由于我还开发了一个使用相同程序但使用 BouncyCastle 进行加密的 Android 应用程序,因此我怀疑使用 OpenSSL 实现代码的正确性,因此此处显示代码以供其他人帮助解决问题。我为计算共享秘密而实施的内容如下

_clientPublicKey_symmetricKey在类级别声明

两侧使用相同的曲线(名为 prime256v1 或 secp256r1),但结果并不总是相同。

编辑 1:作为对@PeterDettman 的回应,我发布了服务器端代码以进行更多说明

在哪里client_public_key_hexclient_public_key其转换为字节数组。预期的结果是始终server_calculatd_symmetric_key等于symmetricKey。但它们并不总是相同的。

编辑 2:作为对@PeterDettman 回答的反馈,我做了一些更改以反映他的建议,尽管不平等率降低了,但在所有情况下,双方生成的密钥协议(共享秘密)并不相同。

可以使用以下数据重现其中一种不等式情况

  • 公钥: 02E05C058C3DF6E8D63791660D9C5EA98B5A0822AB93339B0B8815322131119C4C
  • 私钥: 062E8AC930BD6009CF929E51B37432498075D21C335BD00086BF68CE09933ACA
  • OpenSSL 生成的共享密钥:51d027264f8540e5d0fde70000000000
  • BouncyCastle 生成的共享密钥: 51d027264f8540e5d0fde700e5db0fab

那么在实现的代码或过程中是否有任何错误?

谢谢