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

dart - Dart - 密钥生成方法

我正在寻找一个 dart 包,以便在 Flutter 应用程序中实现密钥交换协议(椭圆曲线 Diffie-Hellman)。

  • 应用程序在登录期间生成一个密钥对并将公钥发送到服务器(因此每次登录都会生成一个新的密钥对)
  • 服务器发回它刚刚生成的公钥
  • 应用程序从它的私钥和服务器的公钥生成一个密钥
  • app 包含所有后续发送到服务器的消息的 hmac

我查看了支持 Diffie-Hellman 的 pointycastle。但我找不到任何生成密钥的方法。这就是 java 生成的内容:

想知道您是否发现了一些线索,可以从 dart 中的私钥和服务器的公钥生成密钥。

0 投票
0 回答
340 浏览

java - Java (Android):根据 JWA (RFC 7518) 的 Diffie-Hellman 密钥交换过程

我需要使用 ECDH 密钥交换过程来加密/解密客户端和服务器之间的消息。
我使用jose4j库来实现加密功能。

我有本地密钥对(privatedC和 public QC),我有远程公钥QT,我有transactionIDand referenceNumber

现在,我需要从所有这些详细信息中生成一个内容加密密钥 (CEK),并使用它来解密从服务器接收到的消息以及加密发送到服务器的消息。

我找不到应该怎么做。

规格:

Diffie-Hellman 密钥交换过程根据 JWA (RFC 7518) 在 Direct Key Agreement 模式下使用曲线 P-256,dCQT生成一对 CEK(每个方向一个),它们被标识为transactionID. 为了从包含的 Concat KDF 函数中获取 256 位的密钥材料,假设 ECDH-ES+A256KW 的“enc”参数并假设 KDF 的 algorithmID 为空(注意,这仅使用 RFC 7518 进行密钥派生)。此版本规范支持的参数值为:

  • “alg”:ECDH-ES
  • “apv”:referenceNumber
  • “EPK”:
  • {“kty”:“EC”“crv”:“P-256”}
  • 所有其他参数:不存在
  • CEK:“kty”:提取为 oct-256 位:
    • CEK(a->s):256 位
    • CEK(s->a):256 位

谢谢!

0 投票
1 回答
581 浏览

security - SecKeyCopyKeyExchangeResult() 函数返回错误,“缺少 kSecKeyKeyExchangeParameterRequestedSize”

我使用 Xcode11 Beta 作为 IDE 和 Swift。

下面是我的代码,我的代码在Xcode10.3上可以正常运行,但是在Xcode11上不行。当我调用函数 SecKeyCopyKeyExchangeResult() 时,堆栈总是返回错误,“kSecKeyKeyExchangeParameterRequestedSize is missing”,但在 Xcode10.3 上没问题。我查看了 Apple Developer 门户网站,对此一无所知。

`
func main() {

0 投票
1 回答
1453 浏览

javascript - React Native 中的椭圆曲线密码学

有谁知道是否有用于 React Native 的椭圆曲线 Diffie Hellman 密码学(ECDH)的实现?

我为此找到了一些库。他们每个人都有一些问题:

  1. react-native-ecc:它只生成密钥对,不实现从私钥和公钥生成共享密钥(秘密密钥)进行加密
  2. react-native-crypto:它使用了一些技巧并递归地更改 node_modules,我认为它不稳定。
  3. elliptic:它在一个普通的 javascript 实现中,它在 react native 中不起作用
0 投票
1 回答
1821 浏览

ios - 使用 Diffie Hellman 密钥交换和椭圆曲线加密快速加密

我一直在尝试使用 Diffie Hellman 密钥交换和椭圆曲线加密快速加密和解密字符串。

以下是我遵循的代码。

SWIFT代码 :

JAVA代码:

我也包含了 Java 代码。我必须在 Swift 中做同样的事情。如何使用共享密钥(Shared1)对字符串进行 EC 加密?我需要做第 3 步。有人请帮忙吗?

0 投票
1 回答
1608 浏览

ios - iOS - swift - 为 secp224k1 曲线 (ECDH) 生成密钥对

我一直在尝试为 iOS 中的 secp224k1 曲线生成公钥和私钥。我们正在使用 ECDH 方法在移动设备和后端之间进行 api 握手。在 Java 中,它是使用下面的代码完成的。

有没有办法快速生成具有特定曲线(secp224k1)类型的密钥?我尝试使用苹果提供的 EC 算法通过以下代码进行握手。

当我发送通过上述方法生成的公钥时,我从服务器收到一条错误消息:

我尝试了 VirgilCrypto 来快速解决问题。但它在库中没有我需要的特定曲线类型。它仅支持 secp256r1。另外,我尝试过但没有成功的以下帖子的答案。

ios/swift 中的椭圆曲线 Diffie Hellman

任何建议或帮助都会很棒,谢谢。

0 投票
0 回答
74 浏览

aes - 在 C# 中使用 micro-ecc 生成的原始 secp256k1 公钥在服务器上生成共享密钥

我计划在我的终端单元上使用micro-ecc C代码microcontroller-based来创建一个uECC_secp256k1公钥和私钥对。

当连接到 C# 服务器时,它将接收服务器的原始 64 字节公钥并将终端单元的原始 64 字节公钥发送回服务器,以便重建一个公共共享密钥,该密钥将用于在连接时对消息进行 AES256 加密.

我想以原始格式发送密钥,因为我不想拆分 IP 数据包。我的通信协议可以处理原始二进制数据。

我尝试使用C# BouncyCastle库,但看不到如何将 64byte[]数组转换为ECPublicKeyParameters变量以重现AES256密钥。

0 投票
1 回答
302 浏览

c# - ECDH (secp256r1) + NIST SP 800-56A 使用 .NET 连接 KDF 在 C# 中真的不可能吗?

我知道这里有类似的问题,但我仍然没有找到明确的答案。是否可以在不使用充气城堡的情况下使用具有给定串联功能的 .NET 库派生会话密钥?似乎存在一些差异,因为我在双方都没有获得相同的会话密钥(第二部分:嵌入式实现)。

这就是我目前正在尝试的方式(TempPubKeySCC 是我收到的原始未压缩格式的公钥,ECDHtempPublicKey 将发送给对方):

所以我的问题?有什么问题吗?或者我需要花一些时间在 bouncycastle 上吗?需要使用 secp256r1 和级联 KDF (NIST SP 800-56A)。

非常感谢 =)

问候马茨

0 投票
1 回答
393 浏览

c# - CngAlgorithm.ECDiffieHellmanP521/P256/P384生成的EccPrivateBlob的CngKeyBlobFormat是什么?

keyBlob 的长度是 206。它的格式是什么?哪些字节是 32 字节私钥和 64 字节公钥?

将公钥从其他地方导入到 CngKey?,长度为4+4+64+32=104。

0 投票
1 回答
325 浏览

c# - 如何将比特币私钥导入 BigInteger?

我使用以下代码尝试导入比特币私钥并计算公钥。计算出的 ECPublicKey 不等于 bitcoinPublicKey。如何纠正?