.NET 中的 Microsoft 椭圆曲线支持有哪些限制?我指的只是 System.Cryptography 命名空间的可能性。
使用该命名空间,我可以实现自定义曲线,还是只能使用框架中硬编码的不同子集?
我特别感兴趣的一条曲线是 secp256k1,但我不想局限于此。
为什么我不使用 Bouncy CaSTLe 而只专注于 Microsoft?原因是因为哈希函数的 Microsoft 实现比 Bouncy CaSTLe 快很多倍,因此我认为基于自定义椭圆曲线的加密。
我不介意是否需要更新注册表或 ini 文件以添加对其他曲线的支持,或构建低级类;我只是想看看可能性和局限性是什么。
最佳答案
.NET 唯一支持的曲线是(并且长期以来一直是)NIST 在 Suite B 中定义的 P-xxx 曲线。不支持开箱即用的任何其他曲线。您定义了一条特定的非 NIST 非素数曲线(Koblitz 曲线),因此 CNG 不支持该曲线。
更准确地说,CNG only supports the following domain parameters用于 ECDSA 和 ECDH key 。这些参数仅在它们也用于“命名曲线”时才受支持:
P-256, P-384, P-521
注意:由于我没有 NDA 或与 Microsoft 的类似协议(protocol),我无法检查这些值是否是硬编码的,但我认为这很有可能。
关于c# - .NET 中存在哪些椭圆曲线支持?我能否定义自己的曲线或复制 SEC 标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19607645/