Tag: 椭圆曲线

使用本机C#创建ECC专用/公钥

关于如何生成公钥和私钥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。

.NET中的ECDiffieHellmanCng是否具有实现NIST SP 800-56A的密钥派生函数,第5.8.1节

我有一项任务需要使用NIST SP 800-56A第5.8.1节中描述的密钥导出函数来获取密钥材料。 我不是密码学方面的专家,所以如果问题是天真的,请原谅。 这是我到目前为止所做的: 我有另一方的公钥和我的私钥 现在我尝试使用C#(。NET 4)ECDiffieHellmanCng类使用ECDH 1.3.132.1.12生成共享密钥,如下所示: // The GetCngKey method reads the private key from a certificate in my Personal certificate store CngKey cngPrivateKey = GetCngKey(); ECDiffieHellmanCng ecDiffieHellmanCng = new ECDiffieHellmanCng(cngPrivateKey); ecDiffieHellmanCng.HashAlgorithm = CngAlgorithm.ECDiffieHellmanP256; ecDiffieHellmanCng.KeyDerivationFunction = ?? // What do I set here 最后这样做: ecDiffieHellmanCng.DeriveKeyMaterial(otherPartyPublicKey:); 在哪里/如何设置其他参数算法ID,Party U Info,Party V Info? 编辑我愿意使用像Bouncy Castle这样的其他库(前提是它们可以从.NET调用)