有人可以解释一下 C# CngKey.Import 吗?
Can someone explain C# CngKey.Import please?
我正在使用软件 ksp 中的主密钥使用 Always Encrypted 加密数据库。
密钥是用CngKey.Create创建的,我也可以导出它,但之后就卡住了。使用 CngKey.Import 创建一个未命名的密钥,这意味着 IsEphemeral=true,因此当没有更多句柄时密钥将被销毁。
如何将密钥导入为将保留的命名密钥?
最终目标是能够使用数据库导出用作主加密密钥的密钥,并将其与数据库备份一起提供给想要使用数据库的一方 x。然后该工具应在 x 方的机器中重新创建密钥。
CnhKey.Create
有一个带有名称的重载。
链接文件说:
If keyName is provided, this overload creates a persisted key
我相信(基于模糊的回忆和 )您可以同时进行创建导入,除非它是加密的 PKCS#8。
byte[] exported = key.Export(blobType);
将导出的和 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);
我正在使用软件 ksp 中的主密钥使用 Always Encrypted 加密数据库。
密钥是用CngKey.Create创建的,我也可以导出它,但之后就卡住了。使用 CngKey.Import 创建一个未命名的密钥,这意味着 IsEphemeral=true,因此当没有更多句柄时密钥将被销毁。
如何将密钥导入为将保留的命名密钥?
最终目标是能够使用数据库导出用作主加密密钥的密钥,并将其与数据库备份一起提供给想要使用数据库的一方 x。然后该工具应在 x 方的机器中重新创建密钥。
CnhKey.Create
有一个带有名称的重载。
链接文件说:
If keyName is provided, this overload creates a persisted key
我相信(基于模糊的回忆和
byte[] exported = key.Export(blobType);
将导出的和 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);