当前位置: 首页 > 知识库问答 >
问题:

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

伏默
2023-03-14
kpg = KeyPairGenerator.getInstance("ECDSA", "BC");
            ecSpec = new ECGenParameterSpec("secp224k1");
kpg.initialize(ecSpec, new SecureRandom());
  1. 哪个是上面提到的C#中的等价曲线名?
  2. 有人能给我举一个例子,说明如何在C#中生成一个类似于上面java代码的keyPair吗?

提前致谢

共有1个答案

霍书
2023-03-14

关于我的第一个问题,我发现了一些东西:

上面提到的C#中的等价曲线名称是哪个?

microsoft库只支持P-256、P-384和P-521“NIST推荐的椭圆曲线ID”,即“SEC 2推荐的椭圆曲线域参数”的等价命名曲线、secp256r1、secp384r1、secp521r1,它们与prime256v1等价,但不支持ANSI X9.62 ECDSA prime曲线ID中的384和521。C#的Bouncy castle库,支持更多其他曲线,比如我感兴趣的secp224k1。

有人能给我举个例子,说明如何在C#中生成一个类似于上面java代码的keyPair吗?

我在这里找到了一个旧的例子,它说支持的密钥只有3:192位,239位和256位,但我想是引用了某个旧版本的库

这段代码可以演示

ECKeyPairGenerator gen = new ECKeyPairGenerator("ECDSA");
        SecureRandom secureRandom = new SecureRandom();
        Org.BouncyCastle.Asn1.X9.X9ECParameters ecp = Org.BouncyCastle.Asn1.Sec.SecNamedCurves.GetByName("secp224k1");
        ECDomainParameters ecSpec = new ECDomainParameters(ecp.Curve, ecp.G, ecp.N, ecp.H, ecp.GetSeed());
        ECKeyGenerationParameters ecgp = new ECKeyGenerationParameters(ecSpec, secureRandom);
        gen.Init(ecgp);
        AsymmetricCipherKeyPair eckp = gen.GenerateKeyPair();
 类似资料:
  • 问题内容: 我需要在C#端生成ECDSA签名,并在使用(显然)相对公钥读取并验证android应用程序上的签名后。好吧,要在Java中获得ECDSA密钥对(使用充气城堡提供程序),代码是这样的 字符串,是曲线名称。我可以选择“ secp224k1”,“ secp224r1”,“ secp256k1”,“ secp256r1”和其他更多内容。 我的问题是: 上面提到的C#中的等效曲线名称是什么? 有

  • 我试图使用javascript创建ECDSA算法的密钥对,签名消息,然后在服务器端验证它(使用Java)。 示例javascript代码: 例如: 我做错了什么?

  • 要使用OpenSSL生成私钥和公钥,我已经运行 我将公钥上传到远程服务器。然后将导入。Net Framework(它必须是。Net Framework)C#服务使用它来签署API有效负载: 用上面的代码给出 如果我使用并运行它会生成一个名为的PKCS#12密钥,然后: 使用<code>privateKeyFile=private-key.pem。p12上面的代码似乎对请求进行了签名,但API响应为

  • 我已经在Java中生成了一个ECDSA签名,我希望从中获得R和S值,以便获得COSE编码的签名。根据我的理解,我生成的签名是DER编码的(默认情况下使用bouncyCastle)。当我使用P-256曲线(SHA256withECDSA)时,我正确地检索了R和S值。 当我使用其他曲线(P-521、P-384)时,从一种编码到另一种编码的签名解析有一些问题。

  • 我是Openssl的新手,我已经生成了私钥myprivatekey。pem和公钥mypublickey。pem与: 和我的公钥: 接下来我想做的是用通行短语私钥加密我的ecdsa,并对我的公钥进行认证请求,感谢大家的帮助。

  • 我对密码学很陌生,我正试图用C#.NET在Windows上对其进行分类 我使用以下命令生成了一个椭圆曲线 P-256(又名 secp256r1 和 prime256v1)键: 我使用以下命令生成了证书签名请求: 另一个团队发给我一个base-64编码的证书作为回应。到目前为止一切顺利。 现在,我收到了一些“测试”数据,需要使用私钥计算ECDSA签名。私钥看起来像: 到目前为止,我一直在努力编写类似