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

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

kpg = KeyPairGenerator.getInstance("ECDSA", "BC");

ecSpec = new ECGenParameterSpec("secp224k1");

kpg.initialize(ecSpec, new SecureRandom());

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

secp256r1”和其他更多内容。

我的问题是:

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

提前致谢

回答:

我发现了关于第一个问题的一些信息:

上面提到的C#中的等效曲线名称是什么?

Microsoft库仅支持P-256,P-384和P-521“ NIST推荐的椭圆曲线ID”,即等效的命名曲线,分别是“ SEC

2推荐的椭圆曲线域参数”的secp256r1,secp384r1,secp521r1,等于prime256v1,但不等于ANSI X9.62

ECDSA基本曲线ID中的384和521。C#的Bouncy城​​堡库支持我感兴趣的更多其他曲线,例如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#的初学者,而这段代码不是我的。:)

以上是 C#ecdsa签名-我可以选择哪个密钥规范? 的全部内容, 来源链接: utcz.com/qa/415942.html

回到顶部