问题标签 [ecdh]

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 投票
0 回答
153 浏览

openssl - mbedTLS ECDH 曲线 25519 和 openSSL

我尝试学习一些关于 diffie-hellman 椭圆曲线的知识……我的目标实际上是在我的 windows pc 上使用 openSSL 生成一个密钥对,将生成的公钥传输到我的 stm32 目标,然后使用 mbedTLS 库计算秘密,等等 ...

视窗:

目标:

我在 stm32 上的代码基于此示例: https ://github.com/ARMmbed/mbedtls/blob/development/programs/pkey/ecdh_curve25519.c

我现在的问题是,我不知道如何使用 mbedTLS 解析生成的 PEM(或 DER)格式,以便我可以正确使用此示例代码和由 openSSL 生成的公钥。

我对 PEM 或 DER 文件的内部 ASN.1 结构了解不多,所以我需要帮助来找到正确的 API 来解析密钥并提取所需的数据。

谢谢

0 投票
1 回答
351 浏览

javascript - P-521 (Web Crypto Api) / secp521r1 (NodeJS Crypto) 的 ECDH 生成略有不同的共享密钥

ECDH我已经从 NodeJS生成了一个公钥和私钥对

鲍勃私钥

鲍勃公钥

Alice的密钥来自带有Web Crypto API的网页

爱丽丝公钥


当我试图推导出发生了shared key一件奇怪的事情时,密钥最后有不同的位。

节点JS:

网络加密 API

结果:

这仅发生在曲线P-521/secp521r1 上,但不会发生在曲线P-256/secp256r1P-384/secp384r1 上

0 投票
0 回答
275 浏览

security - 如何将 ECC 公钥的 DER 或 PEM 格式转换为 RAW 格式

在 OpenSSL 或 WolfSSL 中

我知道总有一种方法可以使用 OpenSSL 或 WolfSSL 将 RAW 公钥格式转换为 DER 或 PEM,但是如何将 DER 或 PEM 公钥格式转换回 RAW 密钥格式。

DER 格式为(十六进制,长度为 158 字节)

0 投票
0 回答
34 浏览

openssl - 如何在 openssl 中使用 ECC 公钥共享 AES-256 密钥

我在 openssl 中找到了生成 AES-256 和 ecc 密钥的调用。我知道要共享一个秘密 ECDH_compute_key 必须使用。以下示例显示了创建共享密钥,但我不明白如何合并 AES-256 密钥。

假设我添加了一个 EVP_CIPHER_CTX *ctx,我将如何将密钥传递给对方?

0 投票
1 回答
171 浏览

c - ECDSA的公钥是否需要有两个坐标?

我正在尝试使用名为easy-ecc的外部库生成 ECDSA 密钥对。我不明白的是这个库为公钥生成了一个坐标。据我从书籍、在线 ECDSA 生成器或 NIST 测试向量中看到,公钥在曲线上总是有两个坐标(X 和 Y)。例如,如果P-384 curve使用 ,则私钥的长度将为 48 字节,公钥将有两个不同的点 X 和 Y,48 bytes每个点。所以,总共96 bytes. 然而,该ecc_make_key函数的行为并不像预期的那样。

下面是创建密钥对的函数原型:

此函数使用按引用传递策略填充空数组。但是,为什么p_publicKey必须ECC_BYTES+1代替ECC_BYTES*2

0 投票
1 回答
214 浏览

java - Java/Android - ECDH 加密 - 从字符串创建 ECPublicKey

我对 ECDH(椭圆曲线 Diffie-Hellman)加密有一点问题。我使用 BouncyCastle 库。

这是我生成密钥的功能:

我用 base64 对我的公钥进行编码:

这是收到的密钥的示例:

现在,我需要使用公钥(字符串)生成一个 ECPublicKey 对象。

但是,我有一个错误:当我使用ECPointUtil.decodePoint()时点编码无效 0x30

我不明白如何解决这个错误,以及我是否使用正确的方法从字符串创建 ECPublicKey 对象。

你能帮我吗 ?:)

0 投票
2 回答
331 浏览

c# - (C#) 在 (EC)DHE x25519 上使用私钥和公钥计算密钥份额

我正在使用 (EC)DHE 加密类型 x25519,我在计算共享密钥时遇到了一个大问题。

我有三个关键:

  • 爱丽丝的私钥:

  • 爱丽丝的公钥:

  • Bob 的公钥:

所以现在我需要像这样组合 Alice 的私钥和 Bob 的公钥(以找到它们之间的共享密钥):

有人用 C# 帮我解决这个问题吗?(我需要一个编程代码)。

0 投票
0 回答
43 浏览

pkcs#11 - 如何使用 IAIK PKCS#11 Wrapper 执行 ECDH

我正在尝试使用 IAIK PKCS#11 包装器来执行 ECDH 密钥协议。我可以看到有一类参数:EcDH1KeyDerivationParameters。但我没有看到任何类别的 ECDH 密钥:http: //javadoc.iaik.tugraz.at/pkcs11_wrapper/current/iaik/pkcs/pkcs11/objects/package-summary.html

通过 IAIK PKCS#11 包装器运行 ECDH 密钥协议时,我应该输入哪些密钥类型?我可以使用 ECDSA 密钥对象或 DH 密钥对象吗?或者我需要额外的东西?

谢谢

0 投票
0 回答
44 浏览

node.js - 如何在 Node JS v10.11.0 中使用 secp256R1 曲线生成 200 长度的 Ecc256 公钥

我想使用 NODEJS V10.11.0 使用 secp256r1 曲线生成一个 200 字符长度的 EC 公钥

0 投票
2 回答
173 浏览

ios - 使用 ECDH 快速生成共享密钥

我正在尝试加密发送给服务器的消息。为此,我生成了一个公钥和私钥。我将我的公钥发送到服务器并从中接收它的公钥。

收到后,我尝试生成一个共享密钥来加密数据。

但我得到了错误(sharedKey = crypto.sharedSecret(forPublicKeyBase64: key))

*** 由于未捕获的异常“无效密钥”而终止应用程序,原因:“公钥 {length = 64, bytes = 0xace3000d e1483ed9 82d88432 9397c716 ... d64e0fe1 47920d9f } 无效”

我的公钥和服务器密钥长度相同。

我做错了什么?