问题标签 [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 回答
1221 浏览

cryptography - Diffie-Hellman 椭圆曲线私钥的长度

我正在使用 FIPS 186-3 推荐的 Diffie-Hellman 椭圆曲线曲线。我正在尝试确定私钥的最大长度,根据 RFC 5915 它应该是:

上限 (log2(n)/8) ,其中 n 是曲线的阶数

对于 P-256 曲线,我得到最大长度 32,这对应于我在代码中看到的内容(假设是无符号表示)。然而对于 P-521 曲线,我得到最大长度 65,但是我在我的代码中得到长度为 66 的私钥。这是来自 P-521 曲线的一个示例 66 字节私钥:

5367794175793176027889969828113014603157344894208126643379049713388781962338446363455749219733919077469072043715066195336337088038146192289964998476049182286

十六进制:

01 90 59 2F 64 1C 73 AB F8 57 C4 F0 F2 A3 17 DD 5E 5F 64 B1 3C 61 15 8F E2 AC 34 DD 3F FC 6F 9B F1 38 9B 66 0F 27 34 60 75 E3 32 B0 B2 80 DF FE 9F A 2 AC FF 82 BE 36 00 77 7A 92 B1 CB F7 7F 98 6E 4E

公钥是(没有前导 0x04 字节):

01 F0 64 36 14 25 89 F8 7E 0D 5F 0E F9 26 36 D7 5C 4A 45 D7 9C 86 BD F8 C5 B9 A7 AA C4 C2 EB 56 52 DD BD BE E1 A0 5B DD A1 1F D8 79 D8 BA 2A 18 68 56 C0 D7 0A 4D D6 2B AB BD 8E D9 33 7F B1 FF E5 18 00 B2 06 21 D9 DA C1 BA A2 E7 43 69 06 FF 03 2F 05 FC 0E 44 74 A1 A3 3B 2E 7E B1 68 01 B2 7F B9 94 EB 8C C7 47 D7 02 A5 46 4E 88 32 59 DD 27 DE 72 C2 6D 8D B4 3B D0 45 67 31 AF 8E 1C 30 87 42 38 9F

有人知道为什么可以获得 66 字节长度的私钥吗?根据 FIPS 186-3 文件,P-521 曲线的顺序是:

n = 6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005449

这给出了上限 (log2(n)/8) = 65。

问候,-马丁·兰斯勒

0 投票
2 回答
3785 浏览

java - 使用椭圆曲线密码验证签名

我需要验证包含多个值的消息的签名。我拥有的唯一参数是签名、公钥和值本身。用于创建签名的算法是 192 位的椭圆曲线密码术。我已经尝试在网上找到代码示例,但我没有找到任何适合这种情况的东西。

有没有人使用java进行验证这个算法的经验?您能否提供代码或示例链接?

感谢您的帮助!

0 投票
0 回答
3550 浏览

java - 使用 BouncyCastle 在 Android 上实现 ECDH 的问题

我正在尝试在 Android 上实现 ECDH,并且我设法获取了测试密钥协议的代码(完整代码如下所示)

不幸的是,当我运行代码时,它给了我一个 java.security.NoSuchAlgorithmException: KeyPairGenerator ECDH implementation not found。

这是我采取的问题线

正如我注意到的那样,有些人提到 BouncyCastle 在 Android 上不受完全支持,并且使用我拥有的 SpongyCastle。我还尝试将提供者从“BC”更改为“SC”

不幸的是,这给了我一个 java.security.NoSuchProviderException: SC

希望有人能给我一些指导。非常感谢!

部分 testECDH() 代码:

0 投票
1 回答
1267 浏览

cryptography - 如何将 ECDSA 曲线规范从 SEC2 形式转换为 Go 所需的形式?

我正在尝试在 Google Go 的曲线 secp256k1 中实现 ECDSA。

Secp256k1 由 SECG 标准(SEC 2,第 2 部分,p上的推荐椭圆曲线域参数,第 15 页)根据参数 p、a、b、G 压缩、G 未压缩、n 和 h 定义。

Go 的加密库中,曲线由参数 P、N、B、Gx、Gy 和 BitSize 定义。如何将 SECG 给定的参数转换为 Go 需要的参数?

0 投票
1 回答
158 浏览

php - PHP中的素数,椭圆曲线

我如何计算接收数字 K,K 返回大于 2 ^ 57 + 1 的下一个素数?一些 1 可以帮助我吗?

0 投票
1 回答
2159 浏览

java - 如何使用 ECDH 加密明文?

我正在寻找示例 Java 代码来实现 ECDH 加密的密码。我已经找到了获取所需密钥的方法,但仍然没有找到加密文本的解决方案。感谢是否有人可以提供一些指导。

顺便说一句,我在为 Android 编程时使用 SpongyCastle。

非常感谢!

0 投票
3 回答
13802 浏览

python - PyECC 示例 - Python 椭圆曲线密码学

我正在使用 PyECC——它是我能找到的唯一一个用于 python的椭圆曲线加密模块。我想知道是否有人有如何使用该模块的示例?我会尝试阅读源代码,但我在 Stack Overflow 上找不到任何关于 python 的主题。

谢谢!

0 投票
1 回答
620 浏览

java - 可以在没有第三方库的情况下在 Java 7 中进行基本的 EC 操作吗?

Java 7 附带SunEC,它提供 ECDH 和 ECDSA 操作。我正在尝试进行基本的 EC 操作(点加法、标量乘法)。

我从

但从那里,我看不到下一步。没有ECPoint.scalarMultiply()ECPoint.add()EllipticCurve.multiply()

我是否遗漏了什么,或者答案只是“没有第三方库就无法做到”?

0 投票
1 回答
1183 浏览

windows - Windows CNG ECDH 秘密协议结构

我花了几天时间搜索ECDH秘密协议的结构,但没有成功。我在 MSDN 中发现NCryptSecretAgreement函数设置了一个指向 NCRYPT_SECRET_HANDLE 变量的指针,该变量接收代表秘密协议值的句柄。我根本不熟悉 WinAPI,所以除了阅读文档之外我什么也做不了。

我需要在基于 Windows 的桌面应用程序和 Web 应用程序之间交换密钥。我需要知道的是 CNG 的 KDF 究竟如何使用(在我的情况下是散列)秘密协议值。我使用 SHA-256 算法作为 KDF 并尝试对秘密协议的 X 和 Y 进行散列,但结果与 CNG 计算的一个不匹配。有任何想法吗?

谢谢你。

0 投票
1 回答
1223 浏览

collision-detection - 定义曲线的方法

我试图在我的物理引擎圆度/曲率中给出形状。

我知道在数学上定义曲线的各种方法;例如贝塞尔曲线、椭圆等。但是我不确定哪种方法最适合在我的物理引擎中使用,因为必须考虑每种方法的速度、构造的可行性和灵活性。我想要一个系统,用户可以在其中轻松地形成相当复杂的曲线,但仍然使相交计算简单快速。

我的物理引擎也是纯连续的,这意味着我必须能够根据恒定的线性/角速度计算曲线与其他曲线和直线碰撞的时间。

  • 有哪些技术可以在数学上定义 2D 曲线?

  • 每种方法在速度、灵活性和构造简单性方面的优缺点是什么?

  • 对于形状相交的可预测性至关重要的发动机,该技术是否可行?