问题标签 [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.
c# - 使用本机 C# 创建 ECC 私钥/公钥
我已经在 Google 和 Microsoft 的 Crypto API 上寻找了几个小时,了解如何生成公钥和私钥 ECC 密钥对。该类ECDiffieHellmanCng
(http://msdn.microsoft.com/en-us/library/system.security.cryptography.ecdiffiehellmancng.aspx#Y3081)列出了一个示例,但我不知道如何直接访问私钥。
对于该程序的一些背景知识,它是一个 C# 控制台应用程序,用于管理 TrueCrypt 会话、AES 预共享密钥加密和 ECDH/AES 加密。我需要一个函数来仅创建一个公钥/私钥对以保存到文件中,然后记录如何在包装的 AES 加密文件中使用这些生成的密钥(而不是像示例所示在运行时生成它)。此外,我知道将文件保存到硬盘驱动器时出现的所有漏洞,但我并不担心这个程序,我正在考虑 2 台客户端计算机是安全的。
另请注意,我不想使用 BouncyCastle API。
java - ECPoint 到 BigInteger 的转换
谁能帮我解决这个问题?我需要将公钥转换为BigInteger
. 这里的公钥是ECPoint
曲线上的一个点(x,y)
。我不知道如何将其转换为BigInteger
. 请帮我。这是我的代码:
cryptography - ECDSA 的椭圆曲线:选择“生成器”
G(Gx, Gy)
-- 也称为生成器-- 是有限域上椭圆曲线 ( EC ) 上的一个点。有限域大小 = p
-- 素数模数。
假设我们有一个EC(Fp):y**2 = x**3 + ax + b (mod p)
应该如何G
选择它的点?
是否必须在EC(Fp)上找到每个点,然后选择其中之一?
或者Gx
\Gy
必须以某种方式具体?
我唯一知道的是:G
的顺序必须是素数。
PS 对不起我的英语,谢谢。
php - 此 PHP 版本不支持 PHP openssl_sign() ecparam 键类型
openssl_sign
正在返回签名字符串但打印此错误。我正在使用椭圆曲线键
c# - 使用存储 C#.Net CNG 中的密钥的 ECDSA 签名文件
我正在尝试使用 CNG API 和 Microsoft Certificate Store 中的证书使用 ECDSA 签署文件。我已经阅读了很多文档并且几乎完成了,但是我对从证书中导入私钥感到困惑。我用 RSA 做了同样的事情,但它似乎做得非常不同。这是我到目前为止的代码:
我得到了错误
System.NotSupportedException:不支持证书密钥算法。
我的证书是 ECDSA_P256 sha384ECDSA,具有以下扩展名:
看起来好像证书是问题,但我不确定它是否可能是代码。
这是我的公钥证书:
encryption - 在 Java 中使用 BouncyCastle 的椭圆曲线加密 API 进行加密
我正在寻找在 bouncy-castle 的 java 实施中使用“ECKey”加密/解密字节 [] 的示例代码。特别是我需要知道如何指定算法、填充等。
提前致谢
java - 在 Bouncy 城堡中使用 SHA256 的 ECDSA 不会引发此类算法异常
我正在尝试使用ECDSA
with SHA256
in生成签名Bouncy Castle
,如下所示,
- 我在一开始就添加了提供者
- 我已经建立了 ECPrivatekey
- /li>
但第 3 步抛出"java.security.NoSuchAlgorithmException: no such algorithm: SHA256withECDSA for provider BC"
。
但是同样"SHA256withECDSA"
的事情,当用"SHA1withECDSA"
prceeds 替换时,没有任何例外。
这怎么可能?我正在使用"bcprov-jdk14-121.jar"
.
由于我已经挣扎了很长时间,任何人都可以帮助我吗?
java - 我如何压缩或编码椭圆曲线公钥并将其放在网络上?
我正在开发分布式数字签名,它对文档进行签名并通过网络将其发送到应用程序服务器。我正在使用 java 中的套接字编程来做到这一点。我认为应该对公钥进行编码或压缩,即 x 和 y 值以某种方式表示为单个二进制数据并保存在公共注册表或网络中。但我不知道如何在 java 中做到这一点。
我想知道如何对公钥和域参数进行编码,以便签名的验证者对其进行解码以使用它。因为当您通过网络将它们发送给验证者时,您必须将其编码为单字节数组.我没有使用 Bouncy Castle Provider。ECDSA算法的整个实现是我的项目
python - 如何通过 ECDH 加密和发送数据,只提供一个公钥(peerkey)?
我正在编写一个需要非对称加密的程序。我的方法是使用 Python 的 M2Crypto,我选择了 ECDH 作为算法。但是,我也希望该过程像 RSA 一样简单,它只需要我们接收器的公钥。ECDH 不是。它的公钥似乎必须首先与发送者自己的公钥结合,从而计算共享秘密并完成所有工作。
不管效率如何,我确实想要这样的解决方案,这样如果有人想给我发消息,我的 EC 公钥就会被发布,发件人必须:
- 获取他/她自己的 EC 私钥
- 把这个私钥和我的公钥结合起来,计算一个共享的秘密
- 使用秘密和 AES 或其他对称密码加密消息
- 向我发送密文和派生的公钥(来自此私钥)。
但这里有一个问题。我观察到只有当任何一方基于相同的曲线参数生成他们的密钥时,才存在成功的密钥交换。但是,除非我提供有关我的公钥所基于的曲线的其他信息,否则还有其他方法可以解决这个问题吗?公钥加载有:
并返回一个 EC.EC_pub 实例。我认为关于曲线的信息应该隐藏在这种情况下的某个地方,但我还没有找到。
请指出我遗漏的内容,或者我的解决方案是否错误或可以更简单,或任何其他建议。谢谢。