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