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”和其他更多内容。
我的问题是:
- 上面提到的C#中的等效曲线名称是什么?
- 有人可以给我一个例子,说明如何在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