SQL Server 安全篇——SQL Server加密(2)——加密数据

本文深入探讨SQL Server中的数据加密,包括使用ENCRYPTBYPASSPHRASE()函数通过密码加密数据,以及利用证书和对称密钥进行高级加密。详细步骤涵盖创建新列、加密与解密数据,强调了在加密数据前进行代码评估的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文属于SQL Server安全专题系列


    在SQL SERVER中的数据可以使用密码或者证书来加密。本文分别来演示一下使用密码和证书来加密。


使用密码或短语(passphrase)加密数据

    在SQL Server中最常见的数据加密函数是ENCRYPTBPASSPHRASE()。这个函数可以使用密码或者短语直接对数据加密而不需要经过SQL Server的加密层次体系。下面使用AdventureWorks2016的Sales.CreditCard表进行演示。从名字可以看出这个表是存储信用卡信息。如果打开表,可以看到还是明文存储,这种安全性明显是不足的。注意:如果读者根据前面章节实操下来,会发现在SQL Server 安全篇——安全元数据(4)——加密(Ecryption)元数据中对这个表的数据进行了AE(Always Encrypted),这里要先去掉:


或使用脚本:

USE AdventureWorks2016 
GO 
ALTER TABLE Sales.CreditCard    
ALTER COLUMN CardNumber DROP MASKED ;  

下面查看原文可以发现如下图的内容:


要加密这个列,需要进行以下步骤:

  • 创建一个varbinary类型的新列
  • 加密CardNumber列并插入数据到新列。
  • Drop掉原列(CardNumber)
  • 更新代码让其使用新的列。

Step 1:创建新列

首先,注意数据类型为varbinary,其次,由于一开始并没有值,也没有默认值,所以在加列时注意不要使用NOT NULL。

USE AdventureWorks2016 
GO 
ALTER TABLE Sales.CreditCard ADD 
CardNumberEncrypted varbinary(8000) NULL ; 


Step 2:加密并插入数据

    实际上就是更新CardNumberEncrypted列,数据来源为CardNumbe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值