2

我正在尝试使用 Thales 的 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 在 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);
4

1 回答 1

1

您需要运行位于开始 > 所有程序 > nCipher 下的 nCipher CSP 安装向导,以便在您的操作系统中注册 nCipher CSP。之后提到的注册表项将可用,您将能够从中读取确切的 CSP 名称。

于 2014-04-07T16:47:58.337 回答