我发现一些有关我的第一个问题:
这是上面提到的在C#中相当于曲线的名字吗?
Microsoft库仅支持P-256,P-384和P-521 “NIST推荐的椭圆曲线ID”,也就是相当于命名曲线,rispectively,secp256r1,secp384r1,SEC 2的” secp521r1推荐椭圆曲线域参数“,它们与prime256v1等效,但不是ANSI X9.62 ECDSA主曲线ID中的384和521。用于C#的弹性城堡库支持更多其他曲线,如我感兴趣的secp224k1。
对于第二个问题
可能有人让我如何在C#中,我可以生成像上面的Java代码密钥对的例子吗?
我找到了一个古老的例子here 它说,支持按键只有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#初学者,这个代码不是我的。 :)