问题标签 [ecdsa]

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 回答
3589 浏览

algorithm - 如何使用签名数据、签名和签名者 ECDSA 公钥验证 ECDSA 签名?

理论上,如果拥有公钥、签名和已签名的数据以及散列算法已知,则应该可以验证一条数据的签名。

我有所有这些二进制格式的组件。有人知道验证此签名的最简单方法吗?开放SSL?Python?一个例子会很棒。不写代码能做到吗?

0 投票
2 回答
12809 浏览

openssl - 如何将 ECDSA 密钥从十六进制转换为 PEM 格式

我有一个据称包含 EC 公钥的十六进制字符串。我需要将此十六进制字符串转换为 PEM 格式(以下示例中的“key.pem”),以调查我打算使用“openssl ec -in key.pem -text -noout”处理的内容。这可能吗?

0 投票
1 回答
17646 浏览

elliptic-curve - ECDSA 签名长度

ECDSA 算法中 256 位 EC 密钥的签名长度是多少?我想验证相同的签名长度。如果有人可以帮助我使用一套 EC 密钥,那就太好了。

0 投票
3 回答
4403 浏览

c++ - 使用 OpenSSL 进行 ECDSA 签名,使用 Crypto++ 进行验证

我使用 Wei Dai 的 Crypto++ 在我的应用程序中创建了一个 ECDSA 密钥对 (secp128r1)。签名和验证按预期工作。我不会将消息本身添加到签名中以最小化签名长度(恰好是 32 字节)。

但是,当我使用 openssl 创建签名时:

OpenSSL 显然将消息本身放入签名中,从而产生更大的签名(例如 39 字节)。如果我设置了,我可以使用 Crypto++ 验证签名CryptoPP::SignatureVerificationFilter::PUT_MESSAGE

我可以告诉 OpenSSL 对消息进行签名,而不是将消息放入签名中,以使生成的签名完全是 32 字节吗?

0 投票
1 回答
5911 浏览

c# - 使用 BouncyCastle 在 C# 中重新创建密钥 (ECPublicKeyParameters)

我生成一个 AsymmetricCipherKeyPair 如下:

我的意图是提取公钥和私钥,然后再重建密钥。我首先提取的密钥如下:

如何重新创建公钥和私钥参数以便我可以使用它们?在此示例中,我确实重新创建了私钥,然后对数据字节数组进行签名。

虽然感觉就像一个真正的黑客,但它工作得很好。我怎样才能用公钥做到这一点?我将变量 xxx 设置为 (ECPublicKeyParameters)aKeyPair.Public,我可以使用下面的代码来验证签名。请注意,我可以直接使用 xxx,但重点是将 xxx 序列化出来然后再返回,因此,这段代码实际上确实转换了 xxx 变量并创建了一个新的变量,该变量存储在 xx 中。然后我使用 xx 进行验证(这表明我可以往返密钥)。

我曾希望我可以从 Q.GetEncoded() 创建密钥 (xx),就像我为私钥所做的那样。

有没有更好的方法来重建私钥?还使用 ASN.1 编码?如果是这样,也许我应该改用它。

0 投票
2 回答
15116 浏览

windows - https 与 Windows 2012 中的 ECDHE-ECDSA-AES256-GCM-SHA384

我是一个很长一段时间的读者,但这是我第一篇关于我找不到解决方案的主题的真正帖子。

我目前在 Windows 2012 上托管一个网站,我希望在该网站上运行最新的 TLS 1.2 密码套件。

我知道如何在 Windows 中启用 TLS 1.1 和 TLS 1.2 并且已经这样做了(通过注册表编辑)。我还将密码顺序更改为我想要的。

我的问题是:在这一步之后,我如何真正完成并设置密码套件的 ECDHE / ECDSA 部分?

当我在最新的 chrome beta 中查看该站点时(如果您使用支持的曲线,它支持 TLS 1.2 中的 ECDHE 和 ECDSA),它似乎跳过了所有 ECHDE 密码套件。

我还需要做些什么来正确启用 ECDHE/ECDSA 吗?

我在网上阅读过试图自己解决这个问题,他们提到复制你的根证书,然后修改它们以某种方式支持 ECDHE。我在吠叫错误的树吗?

预先感谢您对此问题的任何和所有支持。

编辑:添加说明/进展

经过更多的研究,我发现为了让 ECDSA 工作,你需要一个 ECDSA 证书。目前获得证书的唯一方法是自行签名,因为证书卡特尔尚未为椭圆曲线证书制定适当的交叉许可协议和费用结构。

由于自签名不是此站点的选项,因此我已从密码顺序中删除了所有 ECDSA 套件。

不幸的是,因为所有的 AES 伽罗瓦计数器模式套件也是 ECDSA,所以暂时排除了这些。

这给我留下了最强大的 ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521 密码套件,我相信最新版本的 Chrome beta 支持正确吗?我似乎无法让 Chrome 获取除 SHA-1 之外的任何内容。没有 SHA-2 支持吗?即使在最新的测试版中?

0 投票
1 回答
1044 浏览

encryption - 我应该如何正确使用 crypto:sign/4?

我尝试使用 crypto:sign/4 对消息进行签名但失败了。谁能告诉我如何在 Erlang 中使用 ECDSA 签署消息?谢谢。(我使用的是 Erlang 版本 R16B01。)

模块代码:

但它在测试运行中失败了:


感谢 Paul,可以通过进行以下更改来修复此错误。

改变:

至:

0 投票
1 回答
2266 浏览

android - 使用 SpongyCastle 的 Android 版 ECDSA

我刚刚为我的 Android 项目将 SpongyCastle 添加到 Eclipse,但是我似乎无法找到一个好的/完整的示例来说明如何使用 ECDSA 对纯文本进行加密解密。我想这应该是加密库的“hello world”。

谁能帮我这个?或将我引向可以帮助我实现相同目标的其他资源?

谢谢。

0 投票
1 回答
3399 浏览

c# - C# ecdsa 签名 - 我可以选择哪个密钥规范?

我需要在 C# 端生成 ECDSA 签名,并在使用(显然)相对公钥读取并验证 android 应用程序上的签名之后。好吧,要在 java 中获取 ECDSA 密钥对(使用充气城堡提供程序),代码是这样的

字符串"secp224k1", 是曲线名称。我可以选择“secp224k1”、“secp224r1”、“secp256k1”、“secp256r1”等等。

我的问题是:

  1. 上面提到的 C# 中的等效曲线名称是哪个?
  2. 有人可以给我举个例子,说明如何在 C# 中生成一个像上面的 java 代码一样的 keyPair 吗?

提前致谢

0 投票
1 回答
322 浏览

ssl - 如果选择的密码套件是 ECDSA 但选择的客户端证书是 RSA,会出现什么行为

在 TLS1.1 和 TLS 1.0 的情况下,以下场景中的行为是什么?

假设服务器和客户端都能够处理 RSA 和 ECDSA,客户端发送密码套件列表,服务器选择 ECDSA 进行身份验证。然后服务器请求客户端证书。客户端具有用于客户端身份验证的 RSA 和 ECDSA 证书。如果客户端现在选择 RSA 证书。在这种情况下会发生什么。