SQL Server 加密功能实例

SQL Server中加密是层级的,每一个上层为下提供保护。如图:

实例:

/** 
SMK(Service Master Key)在SQL Server安装时生成,由Windows DPAPI(Data Protection API)提供保护 
**/

/**创建数据库级别DMK(Database Master Key),受SMK保护**/ 
create master key encryption by password=N‘Passw0rd‘ 
go

/**数据库内的加密对象受DMK保护 
支持的对称加密算法:DES | TRIPLE_DES | TRIPLE_DES_3KEY | RC2 | RC4 | RC4_128| DESX | AES_128 | AES_192 | AES_256 
非对称加密算法:RSA_512 | RSA_1024 | RSA_2048 
注意避免使用RC,DESX类算法,2014之后会删除此功能 
**/ 
--1.创建非对称密钥.

create asymmetric key asyc_key_enc 
with algorithm=RSA_1024 
encryption by password=N‘[email protected]‘ 
go

--2.创建对称密钥.

create symmetric key symc_key_enc 
with algorithm=Triple_DES 
encryption by password=N‘[email protected]‘ 
go

--3.创建证书.证书也可被其它方式保护

create certificate cert_ENC 
with subject=‘certificate for ENC‘,expiry_date=‘20990101‘ 
go

--4.对称密钥可由以上三种方式提供加密保护 
--4.1 由非对称密钥加密

create symmetric key symc_key_enc_byAsyc 
with algorithm=AES_128 
encryption by asymmetric key asyc_key_enc 
go

--4.2 由对称密钥加密

open symmetric key symc_key_enc 
decryption by password=N‘
[email protected]‘; 
create symmetric key symc_key_enc_bySymc 
with algorithm = DES 
encryption by symmetric key symc_key_enc 
go

--4.3 由证书加密

create symmetric key symc_key_enc_byCert 
with algorithm =AES_128 
encryption by certificate cert_ENC 
go

/**列级数据加密和解密.MSSQL提供以下4对加密/解密函数对列数据加密 
EncryptByCert() 和DecryptByCert()—利用证书对数据进行加密和解密 
EncryptByAsymKey() and DecryptByAsymKey()—利用非对称密钥对数据进行加密和解密 
EncryptByKey() and DecryptByKey()—利用对称密钥对数据进行加密和解密 
EncryptByPassphrase() and DecryptByPassphrase()—利用密码字段产生对称密钥对数据进行加密和解密 
注意:被加密和解密的数据,必需是varbinary类型 
**/

--以ENCRYPTBYKEY为例,其它的大同小异
--对***号IDN进行加密和解密

create table tb(IDN int,Name varchar(20)); 
insert into tb 
values (123456789,‘BigBrother‘),(090807001,‘SpiderMan‘),(336655789,‘SuperMan‘) 
go

--新增列Ency_IDN存储加密数据,使用之前由非对称密钥加密的对称密钥symc_key_enc_byAsyc来加密数据

alter table tb add Ency_IDN varbinary(128); 
go 
open symmetric key symc_key_enc_byAsyc 
decryption by asymmetric key asyc_key_enc 
with password=N‘
[email protected]‘; 
update tb 
set Ency_IDN=ENCRYPTBYKEY(KEY_GUID(‘symc_key_enc_byAsyc‘),CONVERT(Varbinary,IDN));--加密前要转成varbinary 
close symmetric key symc_key_enc_byAsyc --显式关闭对称密钥 
go

--解密被加密的列数据

open symmetric key symc_key_enc_byAsyc 
decryption by asymmetric key asyc_key_enc 
with password=N‘
[email protected]‘; 
select IDN,Ency_IDN,convert(int,DECRYPTBYKEY(Ency_IDN))as Decr_IDN 
from tb; 
close symmetric key symc_key_enc_byAsyc --显式关闭对称密钥 
go
				
时间: 2024-10-29 03:44:10

SQL Server 加密功能实例的相关文章

SQL Server 审计功能-记录所有的操作记录

SQL Server 审计-记录所有的操作记录 说到审计这个话题,相信作为一个企业管理员都知道,比如一般作为一个AD管理员的话,一般都会通过Policy开启审计功能,记录一些自定义的事务日志.对于SQL Server来说,审计也是一样的,SQL Server审计对象收集单个实例的服务器或数据库级的动作和行为监控组. 审计是在SQL Server实例级. 可以有多个审计/ SQL服务器实例.当你定义一个审计,你指定位置的输出结果. 这是审计目标. 审计是在创建的禁用状态,不会自动审计任何行动. 启

SQL Server审计功能入门:SQL Server审核 (SQL Server Audit)

介绍 Audit是SQL Server 2008之后才有的功能,它能告诉你"谁什么时候做了什么事情".具体是指审核SQL Server 数据库引擎实例或单独的数据库涉及到跟踪和记录数据库引擎中发生的事件.它的底层是基于扩展事件(Extented Event),所以其性能和灵活性相对较好.审核数据可以输出到审核文件.Windows安全日志和应用程序日志. Audit都需要创建一个实例级的"SQL Server审核",然后可以创建从属于它"服务器审核规范&qu

由于检索用户的本地应用程序数据路径时出错,导致无法生成 SQL Server 的用户实例

/”应用程序中的服务器错误. 由于检索用户的本地应用程序数据路径时出错,导致无法生成 SQL Server 的用户实例.请确保该用户在此计算机上有本地用户配置文件.该连接将关闭. 堆栈跟踪: [SqlException (0x80131904): 由于检索用户的本地应用程序数据路径时出错,导致无法生成 SQL Server 的用户实例.请确保该用户在此计算机上有本地用户配置文件.该连接将关闭.] System.Data.SqlClient.SqlInternalConnection.OnErro

查看SQL SERVER 加密存储过程,函数,触发器,视图

原文:查看SQL SERVER 加密存储过程,函数,触发器,视图 create  PROCEDURE sp_decrypt(@objectname varchar(50))ASbeginset nocount on--CSDN:j9988 copyright:2004.07.15 --V3.2 --破解字节不受限制,适用于SQLSERVER2000存储过程,函数,视图,触发器--修正上一版"视图触发器"不能正确解密错误--发现有错,请E_MAIL:[email protected]be

Configure Red Hat Enterprise Linux shared disk cluster for SQL Server——RHEL上的“类”SQL Server Cluster功能

下面一步一步介绍一下如何在Red Hat Enterprise Linux系统上为SQL Server配置共享磁盘集群(Shared Disk Cluster)及其相关使用(仅供测试学习之用,基础篇) 一.      创建共享磁盘和 Cluster 微软官方配置文档:https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-shared-disk-cluster-red-hat-7-configure. Linux Cluster结构

【Kettle】4、SQL SERVER到SQL SERVER数据转换抽取实例

1.系统版本信息 System:Windows旗舰版 Service Pack1 Kettle版本:6.1.0.1-196 JDK版本:1.8.0_72 2.连接数据库 本次实例连接数据库时使用全局变量. 2.1 创建新转换:spoon启动后,点击Ctrl+N创建新转换 2.2 在新转换界面中,右键点击DB连接,系统会弹出[数据库连接]界面. windows系统环境下,可用${}获取变量的内容. 说明: 连接名称:配置数据源使用名称.(必填) 主机名称:数据库主机IP地址,此处演示使用本地IP(

Global Azure SQL Server副本功能配置介绍

我们前面几篇文章介绍了Global Azure SQL Server Database的Backup.Recovery.Export.Import等相关功能 ,今天我们介绍一下Global Azure SQL Server Database的副本功能,其实说到副本两个字,言外之意就是备份,在Global Azure SQL Server Database的副本配置其实就跟Backup及Export.Import的工作原理一样,副本就是将正在运行的Global Azure SQL Server D

SQL Server 加密层级

--------------------------------------------------------------------------------------------------------------------------------------------------------- 第一层: 服务主密钥.它在有需要的时候自动生成.比如说要加密数据库主密钥的时候.而且不可以手工create. 然. 我们还是可以对其进行备份与还原的. backup service maste

Sql Server 服务器名称\实例名称 无法连接 Server Name\Instance Name

  解决步骤: 1:  Sql Server是否已经启动. 2:  检查Sql Server服务器是否开启TCP/IP协议. 侦听的默认端口为1433          3:     ping 数据库服务器. 看网络是否可通 4:     Telnet 服务器IP 1433, 检查是否防火墙原因导致端口不通 5:  服务器是否允许远程连接          6:   如果IP 可以ping通,但是机器名ping不通, 那么需要改host 文件. 7:   如果采用IP+端口连接数据库,那么此时已