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
转载于:https://www.cnblogs.com/JiangLe/p/4029840.html
SQL Server 加密层级相关推荐
- sql server 加密_SQL Server机密–第一部分–加密基础知识和SQL Server加密功能
sql server 加密 介绍 (Intro) We use cryptography every day: on the internet, mobile devices, ATM machine ...
- 6.4 SQL Server 加密
6.4 SQL Server 加密 在存储和传输中保护数据对于应用程序和服务的完整性是很重要的.Microsoft SQL Server2008为上述两种情况提供了一些选项.在本节中,我们将了解-些可 ...
- SQL Server 安全篇——SQL Server加密(1)——加密概念
本文属于SQL Server安全专题系列 加密是一种使用密钥和证书的算法来混淆数据的过程.如果没有密钥和证书,即使得到了数据,也无法得知数据的本来面貌,数据就没有价值了.但是由于加解密本身就是一种非常 ...
- sql server 加密_列级SQL Server加密概述
sql server 加密 This article gives an overview of column level SQL Server encryption using examples. 本 ...
- sql server 加密_SQL Server机密–第II部分– SQL Server加密功能
sql server 加密 透明数据加密(TDE) ( Transparent Data Encryption (TDE) ) SQL Server has two ways of encryptin ...
- sql server 加密_SQL Server始终被加密,以适合您的环境进行敏感数据加密
sql server 加密 So, your manager wants you to figure out how to encrypt sensitive Data? Well, Microsof ...
- sql server 加密_SQL Server 2016中的新功能–始终加密
sql server 加密 There are many new features in SQL Server 2016, but the one we will focus on in this p ...
- SQL Server加密存储过程的破解
建好sp后,在"连接到数据库引擎"对话框的"服务器名称"框中,键入 ADMIN:,并在其后继续键入服务器实例的名称.例如,若要连接到名为 ACCT\PAYABL ...
- 查看SQL SERVER 加密存储过程,函数,触发器,视图
create PROCEDURE sp_decrypt(@objectname varchar(50)) AS begin set nocount on --CSDN:j9988 copyright ...
最新文章
- 了解下WSDL 端口
- XMLHelper.cs
- 怎么用u盘在服务器上传文件,U盘向云服务器传输文件吗
- 基于Jquery+Ajax+Json+高效分页
- 点对点信道互连以太网实验_以太网防雷器通讯参数测试(二)——防雷器对高速链路影响的参数...
- 洛谷P3952 时间复杂度【字符串】【模拟】
- 数据科学入门与实战:玩转pandas之二
- C++基础教程之字符串
- Java拼图游戏源码(java拼图小游戏)
- 十年后是计算机人员的作文,二十年后的电子计算机作文
- PS调整图片内存大小快捷键
- 最新AppStore审核被拒常见条例,及解决方案(内购、切支付篇)
- 【技巧分享】【数据分析】数据分析模型
- 给你一个杯子,你如何测试
- 博士毕业选择回老家县城大专任教!事业编、副教授待遇、外加几十万安家费......
- 关于DOTA2排名前5战队惯用英雄分析
- iOS 金币入袋(收金币)动画
- 一、新电脑入手的设置
- java解析读取.rtf格式文档
- MSN Messenger聊天机器人颁奖典礼
热门文章
- 吴恩达深度学习 —— 2.10 m个样本的梯度下降
- 03-从尾到头打印链表
- 网络数据采集技术—Java网络爬虫入门与实战 书稿纠错
- 深度特征融合--add和concat【转载】
- Apache PDFbox快速开发指南
- Skywalking-05:在Skywalking RocketBot上添加监控图表
- 有关编译嵌入式android的swap空间不够导致的编译错误和解决办法
- PHP和MySQL的交互实验注意事项,PHP 和 MySQL 开发中要注意的8个技巧
- pcie usb3.0 驱动 for linux_微软WSL——Linux桌面版未来之光
- golang map合并_Golang之流式编程