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

c# - 使用本机 C# 创建 ECC 私钥/公钥

我已经在 Google 和 Microsoft 的 Crypto API 上寻找了几个小时,了解如何生成公钥和私钥 ECC 密钥对。该类ECDiffieHellmanCnghttp://msdn.microsoft.com/en-us/library/system.security.cryptography.ecdiffiehellmancng.aspx#Y3081)列出了一个示例,但我不知道如何直接访问私钥。

对于该程序的一些背景知识,它是一个 C# 控制台应用程序,用于管理 TrueCrypt 会话、AES 预共享密钥加密和 ECDH/AES 加密。我需要一个函数来仅创建一个公钥/私钥对以保存到文件中,然后记录如何在包装的 AES 加密文件中使用这些生成的密钥(而不是像示例所示在运行时生成它)。此外,我知道将文件保存到硬盘驱动器时出现的所有漏洞,但我并不担心这个程序,我正在考虑 2 台客户端计算机是安全的。

另请注意,我不想使用 BouncyCastle API。

0 投票
0 回答
1427 浏览

java - ECPoint 到 BigInteger 的转换

谁能帮我解决这个问题?我需要将公钥转换为BigInteger. 这里的公钥是ECPoint曲线上的一个点(x,y)。我不知道如何将其转换为BigInteger. 请帮我。这是我的代码:

0 投票
1 回答
1321 浏览

python - 椭圆曲线和点基数


目前正在为 ECDSA 生成椭圆曲线并遇到一些问题:
椭圆曲线:y**2 = x**3 + ax + b (mod p)
椭圆曲线上的点:G = (Gx, Gy)

  1. 如何找到椭圆曲线的基数
  2. 如何找到该椭圆曲线上点 G 的阶数?


- 至于1.:基数可以在SEA中找到(它非常适合大型模块p)。在 Python中是否有任何SEA实现?
--至于2:Python中有什么解决方案吗?

PS
对不起我的英语,谢谢。

0 投票
0 回答
2673 浏览

cryptography - ECDSA 的椭圆曲线:选择“生成器”

G(Gx, Gy)-- 也称为生成器-- 是有限域上椭圆曲线 ( EC ) 上的一个点。有限域大小 = p-- 素数模数。

假设我们有一个EC(Fp)y**2 = x**3 + ax + b (mod p)
应该如何G选择它的点?

是否必须在EC(Fp)上找到每个点,然后选择其中之一?
或者Gx\Gy必须以某种方式具体?


我唯一知道的是:G的顺序必须是素数。

PS 对不起我的英语,谢谢。

0 投票
1 回答
1646 浏览

php - 此 PHP 版本不支持 PHP openssl_sign() ecparam 键类型

openssl_sign正在返回签名字符串但打印此错误。我正在使用椭圆曲线键

0 投票
3 回答
11590 浏览

c# - 使用存储 C#.Net CNG 中的密钥的 ECDSA 签名文件

我正在尝试使用 CNG API 和 Microsoft Certificate Store 中的证书使用 ECDSA 签署文件。我已经阅读了很多文档并且几乎完成了,但是我对从证书中导入私钥感到困惑。我用 RSA 做了同样的事情,但它似乎做得非常不同。这是我到目前为止的代码:

我得到了错误

System.NotSupportedException:不支持证书密钥算法。

我的证书是 ECDSA_P256 sha384ECDSA,具有以下扩展名:

看起来好像证书是问题,但我不确定它是否可能是代码。


这是我的公钥证书:

0 投票
2 回答
2712 浏览

encryption - 在 Java 中使用 BouncyCastle 的椭圆曲线加密 API 进行加密

我正在寻找在 bouncy-castle 的 java 实施中使用“ECKey”加密/解密字节 [] 的示例代码。特别是我需要知道如何指定算法、填充等。

提前致谢

0 投票
1 回答
5539 浏览

java - 在 Bouncy 城堡中使用 SHA256 的 ECDSA 不会引发此类算法异常

我正在尝试使用ECDSAwith SHA256in生成签名Bouncy Castle,如下所示,

  1. 我在一开始就添加了提供者
  2. 我已经建立了 ECPrivatekey
  3. /li>

但第 3 步抛出"java.security.NoSuchAlgorithmException: no such algorithm: SHA256withECDSA for provider BC"

但是同样"SHA256withECDSA"的事情,当用"SHA1withECDSA"prceeds 替换时,没有任何例外。

这怎么可能?我正在使用"bcprov-jdk14-121.jar".

由于我已经挣扎了很长时间,任何人都可以帮助我吗?

0 投票
2 回答
8775 浏览

java - 我如何压缩或编码椭圆曲线公钥并将其放在网络上?

我正在开发分布式数字签名,它对文档进行签名并通过网络将其发送到应用程序服务器。我正在使用 java 中的套接字编程来做到这一点。我认为应该对公钥进行编码或压缩,即 x 和 y 值以某种方式表示为单个二进制数据并保存在公共注册表或网络中。但我不知道如何在 java 中做到这一点。

我想知道如何对公钥和域参数进行编码,以便签名的验证者对其进行解码以使用它。因为当您通过网络将它们发送给验证者时,您必须将其编码为单字节数组.我没有使用 Bouncy Castle Provider。ECDSA算法的整个实现是我的项目

0 投票
0 回答
2148 浏览

python - 如何通过 ECDH 加密和发送数据,只提供一个公钥(peerkey)?

我正在编写一个需要非对称加密的程序。我的方法是使用 Python 的 M2Crypto,我选择了 ECDH 作为算法。但是,我也希望该过程像 RSA 一样简单,它只需要我们接收器的公钥。ECDH 不是。它的公钥似乎必须首先与发送者自己的公钥结合,从而计算共享秘密并完成所有工作。

不管效率如何,我确实想要这样的解决方案,这样如果有人想给我发消息,我的 EC 公钥就会被发布,发件人必须:

  1. 获取他/她自己的 EC 私钥
  2. 把这个私钥和我的公钥结合起来,计算一个共享的秘密
  3. 使用秘密和 AES 或其他对称密码加密消息
  4. 向我发送密文和派生的公钥(来自此私钥)。

但这里有一个问题。我观察到只有当任何一方基于相同的曲线参数生成他们的密钥时,才存在成功的密钥交换。但是,除非我提供有关我的公钥所基于的曲线的其他信息,否则还有其他方法可以解决这个问题吗?公钥加载有:

并返回一个 EC.EC_pub 实例。我认为关于曲线的信息应该隐藏在这种情况下的某个地方,但我还没有找到。

请指出我遗漏的内容,或者我的解决方案是否错误或可以更简单,或任何其他建议。谢谢。