Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人能解释一下C#CngKey.进口吗?_C#_Security_Encryption_Cng - Fatal编程技术网

有人能解释一下C#CngKey.进口吗?

有人能解释一下C#CngKey.进口吗?,c#,security,encryption,cng,C#,Security,Encryption,Cng,我正在使用软件ksp中的“始终使用主密钥加密”对数据库进行加密 密钥是用CngKey创建的。创建,我也可以导出它,但之后我就卡住了。使用CngKey.Import创建一个未命名的键,这意味着IsEphemeral=true,因此当没有更多句柄时,该键将被销毁 如何将密钥作为将被持久化的命名密钥导入 最终目标是能够将用作主加密密钥的密钥与db一起导出,并将其与db备份一起提供给希望使用db的x方。然后,该工具应在x方的机器中重新创建密钥。有一个带名称的重载 相关文件说: 如果提供了keyName,

我正在使用软件ksp中的“始终使用主密钥加密”对数据库进行加密

密钥是用CngKey创建的。创建,我也可以导出它,但之后我就卡住了。使用CngKey.Import创建一个未命名的键,这意味着IsEphemeral=true,因此当没有更多句柄时,该键将被销毁

如何将密钥作为将被持久化的命名密钥导入

最终目标是能够将用作主加密密钥的密钥与db一起导出,并将其与db备份一起提供给希望使用db的x方。然后,该工具应在x方的机器中重新创建密钥。

有一个带名称的重载

相关文件说:

如果提供了keyName,此重载将创建一个持久化密钥

我相信(基于模糊的回忆和)您可以同时创建导入,除非它是加密的PKCS#8

将导出的blobType发送到其他地方

var keyParams = new CngKeyCreationParameters();
// whatever else you want to assign here.

// Add an import to the create step.
keyParams.Properties.Add(new CngProperty(blobType.Format, exported, CngPropertyOptions.None));

CngKey key = CngKey.Create(algorithm, keyName, keyParams);

是的,我知道这一点,我想在另一台机器上重新创建密钥。所以我需要创建一个具有特定私有密钥的密钥key@Swifty好的,从类概述“这个类包装了NCrypt密钥,而不是BCrypt密钥。NCrypt是提供密钥存储功能的CNG的子集。BCrypt是提供基本加密服务的子集,如随机数生成、哈希函数、签名和加密密钥”。因此,
CngKey
可能不是正确的起点。您可能应该看看证书(作为存储和共享密钥对的工具)。我能够使用链接答案中的代码解决我的问题,谢谢!
var keyParams = new CngKeyCreationParameters();
// whatever else you want to assign here.

// Add an import to the create step.
keyParams.Properties.Add(new CngProperty(blobType.Format, exported, CngPropertyOptions.None));

CngKey key = CngKey.Create(algorithm, keyName, keyParams);