我正在尝试使用来自泰勒斯的nShield来在其上生成一对非对称密钥。我在msdn上找到了以下示例:
CspParameters csp = new CspParameters(1, "eToken Base Cryptographic Provider");
csp.Flags = CspProviderFlags.UseDefaultKeyContainer;
try
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp);
key = rsa.ToXmlString(true);
}
catch(Exception ex )
{
string s = ex.Message;
}我可以使用KeySafe成功地连接并在高速机床上生成密钥对.上面的代码引发以下异常:
System.Security.Cryptography.CryptographicException
"Invalid Signature." System.Security.Cryptography.CryptographicException我觉得我没有在CspParameters构造函数中设置正确的第二个参数。这就是它在这个例子中所说的:
// The 1st parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider Types.
// The 2nd parameter comes from HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider.我没有看到任何nCipher、nShield、Thales或诸如此类的东西。
编辑:
工作测试:
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp);
byte[] data = Encoding.ASCII.GetBytes("string");
byte[] enc = rsa.Encrypt(data, false);
String dec = Encoding.ASCII.GetString(rsa.Decrypt(enc, false));
key = rsa.ToXmlString(true);发布于 2014-04-07 16:47:58
您需要运行nCipher CSP安装向导,该向导位于“启动”>“所有程序”>“nCipher”下,以便在操作系统中注册nCipher CSP。在此之后,注册表项将可用,您将能够从它们中读取确切的CSP名称。
https://stackoverflow.com/questions/22915870
复制相似问题