2

我看到关于 SQL Server 2016 的 Always Encrypted 功能的各种文章都描述了使用 SQL Server Management Studio UI 或使用New-SqlColumnEncryptionKey powershell 命令创建列加密密钥。但是如果 C# 客户端应用程序本身想要创建列加密密钥怎么办?这个ENCRYPTED_VALUE专栏的格式是什么?

CREATE COLUMN ENCRYPTION KEY CEK1
WITH VALUES (
COLUMN_MASTER_KEY = CMK1,
ALGORITHM = 'RSA_OAEP',
ENCRYPTED_VALUE = ??????
4

1 回答 1

4

对于证书存储提供程序,您可以使用SqlColumnEncryptionCertificateStoreProvider.EncryptColumnEncryptionKey 方法,例如如下所示:

var randomBytes = new byte[ 32 ];
using (var rng = new RNGCryptoServiceProvider())
{
    rng.GetBytes( randomBytes );
}
var provider = new SqlColumnEncryptionCertificateStoreProvider();
var encryptedKey = provider.EncryptColumnEncryptionKey( masterKeyPath, "RSA_OAEP", randomBytes );
var encryptedKeySerialized = "0x" + BitConverter.ToString( encryptedKey ).Replace( "-", "" );

感谢这篇博文为我指明了正确的方向。

于 2017-10-10T23:47:38.307 回答