问题标签 [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.
java - 如何使用 ECDH 加密明文?
我正在寻找示例 Java 代码来实现 ECDH 加密的密码。我已经找到了获取所需密钥的方法,但仍然没有找到加密文本的解决方案。感谢是否有人可以提供一些指导。
顺便说一句,我在为 Android 编程时使用 SpongyCastle。
非常感谢!
java - 在 Java 中实现 Diffie-Hellman 密钥交换
我正在尝试在 Java 中实现 Diffie-Hellman 密钥交换,但我很难理解规范:
根据 JWA (RFC 7518) 在 Direct Key Agreement 模式下使用曲线 P-256、dT 和 QC 作为本地机制完成 Diffie-Hellman 密钥交换过程,以生成由 Transaction 标识的一对 CEK(每个方向一个) ID。此版本规范支持的参数值为:
- “alg”:ECDH-ES
- “apv”:SDK 参考编号
- “epk”:QC,JSON Web Key (JWK) 格式
- {“kty”:“EC”“crv”:“P-256”}
- 所有其他参数:不存在
- CEK:“kty”:oct - 256 位
创建以下数据的 JSON 对象作为要签名的 JWS 负载:
{“MyPublicKey”:“QT”,“SDKPublicKey”:“QC”}
根据 JWS (RFC 7515) 使用 JWS 紧凑序列化生成完整 JSON 对象的数字签名。此版本规范支持的参数值为:
- “alg”:PS256 或 ES256
- “x5c”:X.5C v3:Cert(MyPb) 加上可选的链接证书
据我了解,ECDH 会生成一个密钥。在共享我的临时公钥 (QT) 后,SDK 会生成相同的密钥,因此我们以后可以交换使用相同密钥加密的 JWE 消息。
JSON {“MyPublicKey”: “QT”, “SDKPublicKey”:” QC”} 将被签名并发送,但我不明白我将如何使用apv和epk ,因为这些标头参数用于JWE而不是第一个要共享的JWS 。
在同一规范中,他们谈论这些 JWE 消息,但他们没有这些 apv 和 epk 参数。
根据 JWE (RFC 7516) 使用与 SDK 相同的“enc”算法加密 JSON 对象,获得的 CEK 由“kid”和 JWE Compact Serialization 标识。此版本规范支持的参数值为:
- “alg”:目录
- “enc”:A128CBC-HS256 或 A128GCM
- “孩子”:交易 ID
- 所有其他参数:不存在
我还阅读了RFC 7518中的示例,在那里我可以看到正在使用的标头参数 apv 和 epk,但我不确定哪些标头参数是 JWE 还是 JWS?
任何关于如何使用 nimbus-jose-jwt 或任何其他 java 库来实现的想法都会非常有帮助。谢谢
ecdsa - 哪个顺序是正确的?ECDSA 在 ECDH 之前还是在 ECDH 之后运行?
我对 ECDSA 和 ECDH 的执行顺序感到困惑,哪个先运行?
由于 ECDH 无法避免 MITM 附加,因此使用 ECDSA 来验证实体。那么 ECDSA 应该在 ECDH 之前运行吗?
还是根本不重要?
ios - 适用于 ios/swift 的符合 fips 的认证加密
我正在寻找符合 fips 的经过身份验证的加密。如果我理解正确,则 ios 中不支持开箱即用的身份验证加密。在那种情况下,我想我可以做 AES-CBC + SHA256。我知道后者是支持的。支持前者吗?
是否有其他替代方案?
编辑:关于这个主题 - ios 是否支持通用加密中的 ECDH?还是仅支持内部核心加密?
谢谢,Z
go - 如何在 Go 中解压缩 ECDH P256 曲线上的单个 X9.62 压缩点?
Golang 的椭圆曲线库可以在给定具有 X 和 Y 值(未压缩坐标)的公共坐标的情况下导出密钥。
但是,当给定的点是 X9.62 压缩形式中具有给定 y 位的单个值时,如何解压缩它?
OpenSSL 使用以下方法处理这种情况:
似乎也有一个类似的问题解决了所涉及的数学问题,但不是 Go 的最佳实践,具体来说:
这应该如何在 Go 中完成?
ios - ios/swift 中的椭圆曲线 Diffie Hellman
iOS 是否公开用于生成密钥的 API,以及使用 ECDH 导出密钥?
据我所见,苹果在内部使用它(特别是 x25519),但我不认为它通过通用加密或其他方式暴露为公共 API。
谢谢,
Z
python-3.x - 在python中使用python和secp384曲线生成ECDH密钥
私钥对,我正在尝试生成 ECDH 密钥,我正在尝试找到一个 python 库来帮助我做到这一点,如果那里有任何 python 库,有人可以帮助我吗?
openssl - prime256v1 曲线的 OpenSSL NID
我正在尝试使用 OpenSSL 创建 EC Diffie Hellman 密钥。我正在使用下面的行。我试图找到 prime256v1 曲线的 nid 但无法找到。我也查阅了 openssl 文档。openssl 不支持 prime256v1 曲线吗?
key = EC_KEY_new_by_curve_name(NID_secp256k1); // prime256v1
node.js - crypto.createECDH 没有被 webpack 添加
我想使用nodejs中crypto模块提供的createECDH函数。我下载了所有依赖项。Webpack 没有在我生成的 javascript 文件中添加 createECDH 函数。如何使用节点中可用的加密的 createECDH 功能。
它增加了许多函数,如 createCipher、createDechiper、createDiffihelman、listCiphers、getCiphers 等。
webcrypto-api - Web Crypto API – ECDH – 可以仅使用私钥组件导入私钥,而无需公钥组件?
给定一个 P-256 椭圆曲线 Diffie-Hellman 私钥(它只是一个随机的 256 位整数):是否可以使用 window.crypto.subtle.importKey() 方法将此私钥导入 CryptoKey 对象Web Crypto API – 没有公钥组件?
我知道如果公钥组件(从私钥组件派生)也可用,则可以导入私钥。例如,下面的代码运行成功:
但是,如果只有私钥组件可用,而没有公钥组件,如下面的代码所示,Web Crypto API 会引发 DOMException,并显示消息“提供给操作的数据不符合要求”。
我也尝试过使用 pkcs8 格式作为密钥,而不是 JWK,但也没有运气。
Web Crypto API 的文档显示可以导入 JWK 格式的 ECDH 私钥 - 因此,似乎在没有公钥组件的情况下也可以这样做(Web Crypto API 应该能够如果需要,从内部的私钥组件计算公钥组件,就像使用 .generateKey() 方法一样)。但是,importKey() 方法似乎仅在包含公钥组件时才有效。
我在这里错过了什么吗?如果没有,是否有人知道解决方案或解决方法,在导入之前单独计算公钥组件,并将它们与私钥组件一起包含在 importKey() 方法中(这似乎过于繁琐且不必要)?