使用本机C#创建ECC专用/公钥
发布时间:2020-12-16 00:20:03 所属栏目:百科 来源:网络整理
导读:关于如何生成公钥和私钥ECC密钥对,我一直在谷歌和微软的Crypto API上闲逛几个小时. ECDiffieHellmanCng类( http://msdn.microsoft.com/en-us/library/system.security.cryptography.ecdiffiehellmancng.aspx#Y3081)列出了一个示例,但我不知道如何直接访问私
关于如何生成公钥和私钥ECC密钥对,我一直在谷歌和微软的Crypto API上闲逛几个小时. ECDiffieHellmanCng类(
http://msdn.microsoft.com/en-us/library/system.security.cryptography.ecdiffiehellmancng.aspx#Y3081)列出了一个示例,但我不知道如何直接访问私钥.
有关该程序的一些背景知识,它是一个C#控制台应用程序,用于管理TrueCrypt会话,AES预共享密钥加密和ECDH / AES加密.我需要一个函数来创建一个公钥/私钥对以保存到文件,然后记录如何在包装的AES加密文件中使用这些生成的密钥(而不是像运行示例所示在运行时生成它).此外,我知道将文件保存到硬盘驱动器时出现的所有漏洞,但我并不担心这个程序,我正在考虑2台客户端计算机是安全的. 另请注意,我不想使用BouncyCastle API. 解决方法
我相信这就是你要找的东西?如果是,请标记为(我的第一个!)答案:-)
其中大部分与CngKey有关,可用于多种变体. static void test1() { CngKey k; if (CngKey.Exists("myECDH",CngProvider.MicrosoftSoftwareKeyStorageProvider,CngKeyOpenOptions.MachineKey)) { k = CngKey.Open("myECDH",CngKeyOpenOptions.MachineKey); } else { k = CngKey.Create(CngAlgorithm.ECDiffieHellmanP256,"myECDH",new CngKeyCreationParameters { ExportPolicy = CngExportPolicies.AllowPlaintextExport,KeyCreationOptions = CngKeyCreationOptions.MachineKey,KeyUsage = CngKeyUsages.AllUsages,Provider = CngProvider.MicrosoftSoftwareKeyStorageProvider,UIPolicy = new CngUIPolicy(CngUIProtectionLevels.None) }); } byte[] privateBytes = k.Export(CngKeyBlobFormat.EccPrivateBlob); byte[] publicBytes = k.Export(CngKeyBlobFormat.EccPublicBlob); //This: var privateTester1 = new ECDiffieHellmanCng(CngKey.Import(privateBytes,CngKeyBlobFormat.EccPrivateBlob,CngProvider.MicrosoftSoftwareKeyStorageProvider)); //Or that: var privateTester2 = new ECDiffieHellmanCng(k); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |