我正在尝试使用Thales的nShield来生成一对非对称密钥。 我在msdn上找到了以下example:
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在HSM上成功连接并生成密钥对。 上面的代码抛出以下异常:
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);
答案 0 :(得分:1)
您需要运行位于“开始”>下的nCipher CSP安装向导。所有程序> nCipher,以便在您的操作系统中注册nCipher CSP。之后提到的注册表项将可用,您将能够从中读取确切的CSP名称。