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