c# - .NET 中存在哪些椭圆曲线支持?我能否定义自己的曲线或复制 SEC 标准?

标签 c# .net cryptography logarithm bitcoin

.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/

相关文章:

.net - 即时修改 IL 代码

javascript - 从 nodejs crypto 返回的字符串中 trim 非 ascii 字符

C# Flash - 外部接口(interface)

c# - 使用适配器模式包装系统对象(文件、服务 Controller 等)与绕行进行单元测试相比有什么优势?

c# - 如何在 mshtml 和 c# 中启用多级撤消/重做

c# - 我应该如何本地化静态 ComboBox 项目?

c# - 存储在内存中的东西有多安全?

c# - 如何自定义 Windows 窗体的系统菜单?

cryptography - 可以用私钥加密/用公钥解密吗?

C 的密码学错误