【问题标题】:How to create Always Encrypted column encryption key from c# client如何从 C# 客户端创建始终加密的列加密密钥
【发布时间】:2018-03-22 12:05:06
【问题描述】:

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

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

【问题讨论】:

    标签: c# sql-server encryption sql-server-2016 always-encrypted


    【解决方案1】:

    对于证书存储提供程序,您可以使用 SqlColumnEncryptionCertificateStoreProvider.EncryptColumnEncryptionKey Method,例如如下图:

    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( "-", "" );
    

    感谢this blog post 为我指明了正确的方向。

    【讨论】:

    • 这正是我所需要的。在此之前,我找不到没有 powershell 的方法。让它与 Key Vault 一起使用也很容易,只需更改提供程序即可。
    猜你喜欢
    • 1970-01-01
    • 2019-07-09
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多