2
我想从Thales使用nShield生成一对非对称密钥。 我发现MSDN上的以下example:.Net加密服务提供商错误使用nShield HSM
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或泰勒斯或类似的有什么。
编辑:
工作测试:
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);
虽然调用rsa.ToXmlString(true)我得到一个“拒绝访问错误”,我将如何指定HSM不存储密钥? – AlexandruC
这是HSM提供安全密钥存储的主要功能之一。如果你不想存储密钥,你为什么要使用HSM? – jariq
我只希望它为我生成它们,我会以另一种方式来存储它们,它们将以不同的方式使用。 – AlexandruC