我正在尝试弄清楚如何使用MCSAPI与ncipher cryptographic service provider (CSP)进行AES加密。让我感到困惑的是,AesCryptoServiceProvider构造函数不接受CspParameters类,该类用于将nCipher指定为csp。
CspParameters cp = new CspParameters(24, "nCipher Enhanced RSA and AES Cryptographic Provider");
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(CspParameters) // works fine
AesCryptoServiceProvider aes = new AesCryptoServiceProvider(); // Constructor takes no parameters.据我所知,Rijndael类也无法指定其他第三方CSP。我错过了什么?有没有办法初始化我的整个系统,为所有后续的加密调用加载一个CSP?我是不是应该使用CSP来管理对称密钥,然后使用默认的AesCryptoServiceProvider来加密/解密?RSACryptoServiceProvider(CspParameters)工作得很好。但我想做对称加密。我需要在C# .NET框架中做到这一点。
发布于 2012-07-09 07:02:12
Microsoft CAPI不支持对称算法的硬件保护密钥。这是API的缺点,而不是nCipher CSP的缺点。唯一可以受硬件保护的密钥是CAPI容器的签名密钥和交换密钥对。创建的任何对称密钥都会生成并在软件中使用。
您可以将(软件)对称密钥包装在(硬件)容器密钥中以进行保护和持久化,但这并不会使这些对称密钥受到硬件保护。
如果你在任何Vista,Server 2008或更新版本上部署,你应该考虑CAPI下一代或CNG:它支持生成和使用硬件保护的对称密钥,Thales/nCipher CNG CSP支持这一点。但是,Thales/nCipher CNG CSP不支持持久化对称密钥,因此要做到这一点,您必须将它们包装在容器密钥对中,就像使用旧的CAPI一样。
我为Thales工作,但不为他们说话:如果您有问题和/或想了解如何获得开发人员支持,请与Thales支持部门联系。
发布于 2012-07-05 22:34:20
AES是一种对称算法,因此不能使用CspParameters。
nCipher是一种硬件标准(参见http://technet.microsoft.com/en-us/library/dd277354),因此,您的令牌可以计算nCipher算法,但由于每个人(爱丽丝和鲍勃)都需要知道密钥,因此在硬件令牌上计算或存储密钥没有任何好处。
你可以看到如何在MSDN example中使用AesCryptoServiceProvider,也许你想使用AesManaged (还有一个例子)。
https://stackoverflow.com/questions/11266758
复制相似问题