C# 使用ncipher CSP和MSCAPI进行AES加密

C# 使用ncipher CSP和MSCAPI进行AES加密,c#,winapi,encryption,aes,nshield,C#,Winapi,Encryption,Aes,Nshield,我试图弄清楚如何使用MCSAPI与ncipher加密服务提供商(CSP)进行AES加密。让我困惑的是AESCryptServiceProvider构造函数不接受用于将nCipher指定为csp的CspParameters类 CspParameters cp = new CspParameters(24, "nCipher Enhanced RSA and AES Cryptographic Provider"); RSACryptoServiceProvider rsa = new RSACry

我试图弄清楚如何使用MCSAPI与ncipher加密服务提供商(CSP)进行AES加密。让我困惑的是
AESCryptServiceProvider
构造函数不接受用于将nCipher指定为csp的
CspParameters

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来管理对称密钥,然后使用默认的
AESCryptServiceProvider
来加密/解密
rsacyptoserviceprovider(CspParameters)
工作正常。但我想做对称加密。
我需要在C#.NET框架中执行此操作。

AES是一种对称算法,因此不能使用CSP参数

nCipher是一个硬件标准(请参阅),因此您的令牌可以计算AES算法,但由于每个人(Alice和Bob)都需要知道密钥,因此在硬件令牌上计算或存储密钥没有任何好处


您可以在中看到如何使用AESCryptServiceProvider,可能您想要使用(还有一个示例)。

Microsoft CAPI不支持对称算法的硬件保护密钥。这是API的缺点,而不是nCipher CSP的缺点。唯一可以受到硬件保护的密钥是CAPI容器的签名和交换密钥对。创建的任何对称密钥都会生成并在软件中使用

您可以将(软件)对称密钥包装在(硬件)容器密钥中以进行保护和持久化,但这不会使这些对称密钥受到硬件保护

如果你正在部署任何Vista,服务器2008或更新,你应该考虑CAPI下一代或CNG:它支持生成和使用硬件保护的对称密钥,而TeleS/NCIPHER CNG CSP对此有支持。但是,Thales/nCipher CNG CSP不支持保留对称密钥,因此,要做到这一点,您必须将它们封装在容器密钥对中,就像使用老式CAPI一样


我为泰雷兹工作,但不代表他们发言:如果您有问题和/或想了解如何获得开发人员支持,请联系泰雷兹支持。

您好,欢迎使用1491745。我已经更改了标签,因此此问题变得更清晰(例如,使用C#代替C#-4.0将导致更多人查看此问题)。此外,我已经悬赏了它,希望它能引起一些注意。否定的答案也是答案,如果明天没有人有更好的答案,我将奖励你。桑德谢谢你的评论,这与我最终从泰雷兹代表处获得的信息相同。我继续使用关键包装技术实施了我们的解决方案。伙计们,什么是正确的方式来确认用户已经充分回答了我最初的问题?我已经对他的答案投了赞成票。还有别的吗?再次感谢。哦,呃,没有看到那个评论。您必须单击左侧答案\旁边的V标记。。。