小编Vas*_*los的帖子

使用C#/ CSP在HSM中使用不可导出密钥进行RSA加密

我正在尝试使用这段代码在C#中使用RSA(CSP中的Exchange密钥)加密symetric密钥(RSA密钥CSP50C8C7CD不可导出,并且它在HSM中):

CspParameters csp_dnet = new CspParameters(1, "HSM especific CSP");
csp_dnet.Flags = CspProviderFlags.UseNonExportableKey;
csp_dnet.KeyContainerName = "test";

RSACryptoServiceProvider rsa_dnet = new RSACryptoServiceProvider(csp_dnet);

// Create 3DES key
TripleDES tripleDES = new TripleDESCryptoServiceProvider();

// Encrypt 3DES with RSA
byte[] encryptedSessionKey = rsa_dnet.Encrypt(tripleDES.Key, false);
Run Code Online (Sandbox Code Playgroud)

看到CSP日志,我注意到C#正在尝试导出密钥以继续操作.下面的CSP日志显示了关于rsa_dnet.Encrypt的部分:

LOG CSP

...

[12/12/2012 17:28:45] [3688] D [CryptExportKey]  Blob type: PRIVATEKEYBLOB

...

[12/12/2012 17:28:45] [3688] E [CryptExportKey]  Return: FALSE. An internal error occurred.
Run Code Online (Sandbox Code Playgroud)

Windows SO调用CryptExportKey传递PRIVATEKEYBLOB意味着导出de私钥.

LOG HSM

...
2012/12/12 17:44:02 [4DD18140] new key 'test/CSP50C8C7CD', t: 6, a: 0 …
Run Code Online (Sandbox Code Playgroud)

c# encryption rsacryptoserviceprovider

8
推荐指数
1
解决办法
1437
查看次数

标签 统计

c# ×1

encryption ×1

rsacryptoserviceprovider ×1