【问题标题】:How to generate ENCRYPTED_VALUE for CEK in SQL Server Always Encrypted如何在 SQL Server Always Encrypted 中为 CEK 生成 ENCRYPTED_VALUE
【发布时间】:2018-04-04 18:45:52
【问题描述】:

是否可以以不同于 SSMS 的方式生成 ENCRYPTED_VALUE?我喜欢为选定的列启用“始终加密”功能,但我想知道用未知密钥加密数据。

在我看来,总是应该有办法在不连接到 azure key vault 的情况下解密数据(就像我理解的加密数据 SQL Server 使用对称 AES256 一样)。

CREATE COLUMN ENCRYPTION KEY MyCEK   
WITH VALUES  
(  
    COLUMN_MASTER_KEY = MyCMK,   
    ALGORITHM = 'RSA_OAEP',   
    ENCRYPTED_VALUE = (i am talking about this value)
); 

【问题讨论】:

    标签: sql-server encryption azure-sql-database azure-keyvault always-encrypted


    【解决方案1】:

    在与谷歌进行搜索后,我发现了如何做到这一点。这是生成此值的示例代码(c#)。

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

    如果您想了解更多信息,我建议你们看看这篇文章: https://blogs.msdn.microsoft.com/sqlsecurity/2015/09/25/creating-custom-key-store-providers-for-always-encrypted-azure-key-vault-example/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 2017-04-23
      • 1970-01-01
      • 2018-07-13
      • 2018-07-06
      相关资源
      最近更新 更多