2014-04-07 51 views
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); 

回答

1

你需要運行nCipher的CSP安裝嚮導位於開始>所有程序> nCipher的,才能在操作系統註冊nCipher的CSP 。之後提到的註冊表項將可用,您將能夠從它們讀取確切的CSP名稱。

+0

雖然調用rsa.ToXmlString(true)我得到一個「拒絕訪問錯誤」,我將如何指定HSM不存儲密鑰? – AlexandruC

+1

這是HSM提供安全密鑰存儲的主要功能之一。如果你不想存儲密鑰,你爲什麼要使用HSM? – jariq

+0

我只希望它爲我生成它們,我會以另一種方式來存儲它們,它們將以不同的方式使用。 – AlexandruC

相關問題