我发现了关于我的第一个问题的一些信息:
上面提到的 C# 中的等效曲线名称是哪个?
microsoft 库仅支持 P-256、P-384 和 P-521“NIST 推荐的椭圆曲线 ID”,即等效命名曲线,对应地,“SEC 2 推荐的椭圆曲线域参数”的 secp256r1、secp384r1、secp521r1相当于 prime256v1,但不是 ANSI X9.62 ECDSA 素数曲线 ID 中的 384 和 521。C# 的充气城堡库,支持更多其他曲线,如我感兴趣的 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# 的初学者,这段代码不是我的。:)