SQL Server 加密层级

---------------------------------------------------------------------------------------------------------------------------------------------------------
第一层:
服务主密钥、它在有需要的时候自动生成、比如说要加密数据库主密钥的时候。而且不可以手工create。
然、
我们还是可以对其进行备份与还原的。
backup service master key to file = 'E:\server_master_key.bak'
encryption by password = '123456'; -- 没有with
go
-------------------------
restore service master key from file = 'E:\server_master_key.bak'
decryption by password = '123456'; -- 没有with
go
第二层:
数据库主密钥、它要我们手工的create 、它用来加密 证书,对称密钥,非对称密钥。
create master key encryption by password = '123456';
go
-----------------------------
如前面所说的、数据库主密钥是通过服务主密钥加密的! 那为什么在create master key 中还要有
ecryption by password 这一项呢!这是因为SQL Server 提供两种访问方式
1、自动型,简单的说就是SQL server 知道你要用了会去自动打开 master key,然而它也有不好的
的地方就是它要与权限关联。就是说如果你的账号没有适当的权限就打不开。
2、手动型,就是说你要手动的打开与关闭。
--------------------------------------
A、去除service master key 加密
alter master key drop encryption by service master key;
go; -- 没有with
---------------------------------------
B、增加 service master key 加密
open master key decryption by password = '1234567'
alter master key add encryption by service master key;
close master key; -- 没有with
go
------------------------------
然、数据库主密钥也支持备份与还原
backup master key to file = 'E:\master_key.bak'
encryption by password = '123456'; -- 没有with
go
---------------------------
restore master key from file = 'E:\master_key.bak'
decryption by password = '123456'
encryption by password = '1234567' -- 没有with 但是一定要加encryption by password 这一项才可以正确的运行。
go
---------------------------
-----------总结:service master key 与 master key 的操作都不带with-----------------
第二层:
非对称加密部分、它用来加密数据。
创建:
create asymmetric key asy_key_test
with
algorithm = rsa_512
encryption by password = '123456';
go
删除:
drop asymmetric key asy_key_test;
go
加密:
insert into T(X,Y) values(1,ENCRYPTBYASYMKEY(ASYMKEY_ID('asy_key_test'),'this is the clear text'));
go
解密:
select X,cast(
DECRYPTBYASYMKEY(ASYMKEY_ID('asy_key_test'),Y,N'abcdef') as varchar)
from T;
go
对于非对称的密钥、加密是用公钥完成的,解密是用私钥。
也就是说如果我们把密钥的私钥部分修改,解密时会出错
alter asymmetric key asy_key_test
with
private key(encryption by password = 'abcdef',decryption by password = '123456');
go -- 小心with 后面是小括号!
-------------------------------------------------------------------------------------------------------------------
对称加密部分、
创建:
create symmetric key sym_key_test
with
algorithm = TRIPLE_DES
encryption by password = '123456';
-- encryption by asymmetric key asy_key_name;也是可以用
go
删除:
drop symmetric key sym_key_test;
使用:
open symmetric key sym_key_test decryption by password = '123456'
insert into T3(X,Y) values(1,ENCRYPTBYKEY(KEY_GUID('sym_key_test'),'this is the text!'));
select cast(DECRYPTBYKEY(Y) as varchar)from T3;
close symmetric key sym_key_test;
go
--------------- 加密时还是要有key_guid 的,解密时就不用这么多了--------------------------------------
证书部分:
证书有自己的公钥与私钥,还有过期时间,支持备份还还原就是说证书的可移植性强。
创建:
create certificate ctf_test
encryption by password = '123456'
with
subject = '证书名:ctf_test',
start_date = '2014-10-16',
expiry_date = '2015-10-16'
go
备份:
backup certificate ctf_test
to file = 'E:\ctf_public.bak'
with private key(file= 'E:\ctf_private.bak',decryption by password= '123456',encryption by password= '123456');
go
还原:
create certificate ctf_test
from file = 'E:\ctf_public.bak'
with private key(file= 'E:\ctf_private.bak',decryption by password= '123456',encryption by password= '123456');
go
管理证书的私钥:
删除、
alter certificate ctf_test
remove private key;
增加、
alter certificate ctf_test
with private key
(file= 'E:\ctf_private.bak',decryption by password= '123456',encryption by password= '123456');
go
使用、
create table T4(X int ,Y varbinary(max));
go
加密:
insert into T4(X,Y) values(1,ENCRYPTBYCERT(CERT_ID('ctf_test'),'this is the text'));
go
解密:
select * ,cast(DECRYPTBYCERT(CERT_ID('ctf_test'),Y,N'123456') as varchar) as [解密文本]
from T4;
go

SQL Server 加密层级的更多相关文章
- 查看SQL SERVER 加密存储过程,函数,触发器,视图
原文:查看SQL SERVER 加密存储过程,函数,触发器,视图 create PROCEDURE sp_decrypt(@objectname varchar(50))ASbeginset noc ...
- SQL Server 加密案例解析
一.概述 加密是一种安全措施,有时候甚至是法律要求.作为攻破Windows系统的最后一道防线,通过加密可以保证在没有密钥的情况下获取备份或者物理介质变得毫无意义. 二.概念 加密层次结构 加密层次结构 ...
- SQL Server加密存储过程的破解
建好sp后,在“连接到数据库引擎”对话框的“服务器名称”框中,键入 ADMIN:,并在其后继续键入服务器实例的名称.例如,若要连接到名为 ACCT\PAYABLE 的服务器实例,请键入 ADMIN:A ...
- [转]细说SQL Server中的加密
简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程.在SQL Server中,加密并不能替代其他的安全设置,比如防止未被授权的人访问数据库或是数据库实例所在的Windows系统,甚至是数据库所在 ...
- 细说SQL Server中的加密【转】
简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程.在SQL Server中,加密并不能替代其他的安全设置,比如防止未被授权的人访问数据库或是数据库实例所在的Windows系统,甚至是数据库所在 ...
- 细说SQL Server中的加密
简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程.在SQL Server中,加密并不能替代其他的安全设置,比如防止未被授权的人访问数据库或是数据库实例所在的Windows系统,甚至是数据库所在 ...
- (4.23)SQL Server中的加密
转自:https://www.cnblogs.com/CareySon/archive/2012/04/01/SQL-SERVER-Encryption.html 简介 加密是指通过使用密钥或密码对数 ...
- (4.22)Microsoft 管理控制台启用 SSL 加密的 SQL Server 实例
如何通过使用 Microsoft 管理控制台启用 SSL 加密的 SQL Server 实例 关键词:MSSQL加密,sql server加密,sql server客户端与服务器传输内容加密 转自:h ...
- SQL Server 数据加密功能解析
SQL Server 数据加密功能解析 转载自: 腾云阁 https://www.qcloud.com/community/article/194 数据加密是数据库被破解.物理介质被盗.备份被窃取的最 ...
随机推荐
- 在windows下安装mysql
本文主要讲mysql解压版在windows下的安装和配置,在官网http://www.mysql.com/下载mysql-cluster-gpl-7.3.7-winx64.zip,然后将mysql解压 ...
- 创建文件夹并解决解决unicode和ASCII码转换的问题
# -*- coding: UTF-8 -*-import sysimport timeimport os #解决unicode和ASCII码转换的问题reload(sys) #解决unicode和A ...
- [转]在ITunes播放中前进、后退五秒的快捷键
在ITunes播放中前进.后退五秒的快捷键 如题,快捷键为Command+Alt+方向键.听Podcast一两句没听清楚的时候很有用. reference: http://mac.pcbeta.com ...
- 滑动冲突的补充——Event的流程走向
一.之前分析的滑动冲突,并没有讲述event事件是如何分发到不同的控件 View的滑动冲突 现在分析一下滑动冲突event事件的流向 假设: 我们的一个事件为 点下——>左滑动一次——> ...
- php5.5以上的版本 开启curl
对于php5.5以上的版本开启方法,需要libeay32.dll.ssleay32.dll.libssh2.dll三个文件拷备到C:\Windows目录下,php.ini中 扩展开启,重启apache ...
- Delphi与Javascript的交互
网络上也有人写了关于Delphi与Javascript的文章,其大多数使用ScriptControl等,均无法达到与Delphi自身融合的效果.我也是在翻阅自己的组件库的时候发现了这个以前收集来的代码 ...
- 【JavaScript】Object.prototype.toString.call()进行类型判断
权声明:本文为博主原创文章,未经博主允许不得转载. op = Object.prototype, ostring = op.toString, ... function isFunction(it) ...
- Genymotion如何访问本地服务器?
找到原因了,其实跟Genymotion没有关系,因为他本身是作为VirtualBox的一个虚拟OS在运行. 默认情况下,查看Genymotion的网络配置,是Host-Only模式: Microsof ...
- Java的Git管理工具Gitblit
From:http://www.oschina.net/p/gitblit Gitblit 是一个纯 Java 库用来管理.查看和处理 Git 资料库.相当于 Git 的 Java 管理工具. 下载地 ...
- Easy UI treegrid 分页实例
转自:http://www.jeasyuicn.com/jquery-easyui-treegird-page-processing.html