---------------------------------------------------------------------------------------------------------------------------------------------------------

第一层:

服务主密钥、它在有需要的时候自动生成、比如说要加密数据库主密钥的时候。而且不可以手工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 加密层级相关推荐

  1. sql server 加密_SQL Server机密–第一部分–加密基础知识和SQL Server加密功能

    sql server 加密 介绍 (Intro) We use cryptography every day: on the internet, mobile devices, ATM machine ...

  2. 6.4 SQL Server 加密

    6.4 SQL Server 加密 在存储和传输中保护数据对于应用程序和服务的完整性是很重要的.Microsoft SQL Server2008为上述两种情况提供了一些选项.在本节中,我们将了解-些可 ...

  3. SQL Server 安全篇——SQL Server加密(1)——加密概念

    本文属于SQL Server安全专题系列 加密是一种使用密钥和证书的算法来混淆数据的过程.如果没有密钥和证书,即使得到了数据,也无法得知数据的本来面貌,数据就没有价值了.但是由于加解密本身就是一种非常 ...

  4. sql server 加密_列级SQL Server加密概述

    sql server 加密 This article gives an overview of column level SQL Server encryption using examples. 本 ...

  5. sql server 加密_SQL Server机密–第II部分– SQL Server加密功能

    sql server 加密 透明数据加密(TDE) ( Transparent Data Encryption (TDE) ) SQL Server has two ways of encryptin ...

  6. sql server 加密_SQL Server始终被加密,以适合您的环境进行敏感数据加密

    sql server 加密 So, your manager wants you to figure out how to encrypt sensitive Data? Well, Microsof ...

  7. 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 ...

  8. SQL Server加密存储过程的破解

    建好sp后,在"连接到数据库引擎"对话框的"服务器名称"框中,键入 ADMIN:,并在其后继续键入服务器实例的名称.例如,若要连接到名为 ACCT\PAYABL ...

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

    create  PROCEDURE sp_decrypt(@objectname varchar(50)) AS begin set nocount on --CSDN:j9988 copyright ...

最新文章

  1. 了解下WSDL 端口
  2. XMLHelper.cs
  3. 怎么用u盘在服务器上传文件,U盘向云服务器传输文件吗
  4. 基于Jquery+Ajax+Json+高效分页
  5. 点对点信道互连以太网实验_以太网防雷器通讯参数测试(二)——防雷器对高速链路影响的参数...
  6. 洛谷P3952 时间复杂度【字符串】【模拟】
  7. 数据科学入门与实战:玩转pandas之二
  8. C++基础教程之字符串
  9. Java拼图游戏源码(java拼图小游戏)
  10. 十年后是计算机人员的作文,二十年后的电子计算机作文
  11. PS调整图片内存大小快捷键
  12. 最新AppStore审核被拒常见条例,及解决方案(内购、切支付篇)
  13. 【技巧分享】【数据分析】数据分析模型
  14. 给你一个杯子,你如何测试
  15. 博士毕业选择回老家县城大专任教!事业编、副教授待遇、外加几十万安家费......
  16. 关于DOTA2排名前5战队惯用英雄分析
  17. iOS 金币入袋(收金币)动画
  18. 一、新电脑入手的设置
  19. java解析读取.rtf格式文档
  20. MSN Messenger聊天机器人颁奖典礼

热门文章

  1. 吴恩达深度学习 —— 2.10 m个样本的梯度下降
  2. 03-从尾到头打印链表
  3. 网络数据采集技术—Java网络爬虫入门与实战 书稿纠错
  4. 深度特征融合--add和concat【转载】
  5. Apache PDFbox快速开发指南
  6. Skywalking-05:在Skywalking RocketBot上添加监控图表
  7. 有关编译嵌入式android的swap空间不够导致的编译错误和解决办法
  8. PHP和MySQL的交互实验注意事项,PHP 和 MySQL 开发中要注意的8个技巧
  9. pcie usb3.0 驱动 for linux_微软WSL——Linux桌面版未来之光
  10. golang map合并_Golang之流式编程