SQL server 数据加密

简介
加密是指通过使用密钥或密码对数据进行模糊处理的过程。在SQL Server中,加密并不能替代其他的安全设置,可以当数据库破解或是备份被盗取后的最后一道防线,通过加密,未经授权的人在没有密匙或密码的情况下所窃取的数据变成毫无意义。
什么是数据加密
加密是指通过使用密钥或密码对数据进行模糊处理的过程,如图:
在这里插入图片描述
加密算法的选择
SQL Server提供了比如:DES、Triple DES、TRIPLE_DES_3KEY、RC2、RC4、128 位 RC4、DESX、128 位 AES、192 位 AES 和 256 位 AES这些加密算法,没有某种算法能适应所有要求,每种算法都有长处和短处
加密
创建数据库主密钥

CREATE MASTER KEY ENCRYPTION BY PASSWORD ='Pa$$word'

创建证书

CREATE CERTIFICATE CertTest 
with SUBJECT = 'Test Certificate'
GO

在这里插入图片描述
证书加密对称密钥

CREATE SYMMETRIC KEY SymmetricByCert
    WITH ALGORITHM = AES_256
    ENCRYPTION BY CERTIFICATE CertTest;
GO

在这里插入图片描述
SQL Server中的数据列加密(Column-level Encryption)
SQL Server在2005引入了列加密的功能。使得可以利用证书,对称密钥和非对称密钥对特定的列进行加密。在具体的实现上,根据加密解密的方式不同,内置了4对函数用于加密解密:
• EncryptByCert() 和DecryptByCert()—利用证书对数据进行加密和解密
• EncryptByAsymKey() and DecryptByAsymKey()—利用非对称密钥对数据进行加密和解密
EncryptByKey() and DecryptByKey()—利用对称密钥对数据进行加密和解密
• EncryptByPassphrase() and DecryptByPassphrase()—利用密码字段产生对称密钥对数据进行加密和解密

因此,加密数据列使用起来相对比较繁琐,需要程序在代码中显式的调用SQL Server内置的加密和解密函数,这需要额外的工作量,并且,加密或解密的列首先需要转换成Varbinary类型。

我们看下怎么给数据加密以及解密
首先看加密:

打开之前创建的由证书加密的对称密钥
OPEN SYMMETRIC KEY SymmetricByCert DECRYPTION BY CERTIFICATE CertTest;
------比如加密名字如下图 类型一定是Varbinary(500)
insert SYS_User(User_Name) 
values(EncryptByKey(KEY_GUID('SymmetricByCert '), '789'))

此时加密列无法直接进行查看

select CONVERT(varchar(500), User_Name) from SYS_User

在这里插入图片描述
直接查询会显示二进制数
在这里插入图片描述

如何解密:

OPEN SYMMETRIC KEY SymmetricByCert DECRYPTION BY CERTIFICATE CertTest;

SELECT CAST(DecryptByKey(User_Name) as varchar(100)) FROM SYS_User;

CLOSE SYMMETRIC KEY SymmetricByCert;

GO

在这里插入图片描述
非对称密匙这里不多说,原理都差不多

  • 7
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值