一:对称加密 

原始明文---密钥---加密数据---密钥---原始明文

速度快,通过算法将明文混淆,占用系统资源少

二:非对称加密

加密解密速度慢,较高的系统资源占用

三:混合数据加密

加密过程:随机生成对称密钥,使用公钥加密对称密钥。

解密过程:用私钥解开被加密的对称密钥,使用对称密钥解密数据

四:备份,还key原服务主密钥 (sqlserver服务器主密钥)

备份密钥

Backup service master key to file =’c:\xx.bak’;

Encryption  by password = ‘password’;

实例backup service master key to file = 'D:\work path\dbFile\data.bak'

encryption by password = 'test'

还原密钥

Restore service master key from file =’c:\xx.bak’

Decryption by password=’password’;

五:创建数据库主密钥(需要手动创建数据库主密钥)

Create master key encryption by password = ‘password’

create master key encryption by password = 'databaseTest'

备份数据库密钥

backup master key to file = 'D:\work path\dbFile\database.bak' encryption by password = 'databaseTest'

六:目录视图中查看数据库密钥信息

select * from sys.symmetric_keys

select * from sys.databases  --is_master_key_encrypted_by_server 1 表示使用服务主密钥对数据库主密钥进行加密

七:创建证书

Create certificate cert_mycert;--创建证书

Encryption by password=’’--创建证书密码

with subject 标题

创建证书时效性,需要存储过程等方式手动验证

Start_data=’’    expiry_date=’’

命令如下:

Create certificate myfirst_cert Encryption by password='myfirst_cert' with subject = 'myfirst_cert', start_date = '1/1/2010', expiry_date = '1/1/2015'

Create certificate test_cert Encryption by password='test_cert' with subject = 'test_cert', start_date = '1/1/2010', expiry_date = '1/1/2015'

查询证书

Select * from sys.certificates

八:与证书相关的函数

Encyrptbycert(id,’cleartext’);

Cert_id(‘'myfirst_cert’)

九:创建非对称密钥

使用sn.exe工具也可以创建

Create asymmetric key asy_key1 With algorithm = rsa_2048 Encryption by password='asy_key1'

十:创建对称密钥

Create symmetric key sy_key1 With algorithm = aes_256 Encryption by password='sy_key1'

Create symmetric key sy_key1_test With algorithm = aes_256 Encryption by password='testPassword'

十一:查询密钥

1:打开密钥指令

open symmetric key sy_key1 decryption by password ='sy_key1'

查询密钥

select * from sys.openkeys

关闭密钥

close symmetric key sy_key1_test

十二:使用密钥加密数据例子 (加密列不要创建索引,无意义,并且考虑列长度会变长)

declare @oldContent varbinary(200); --定义原始变量

declare @newContent varbinary(200);--定义加密后的变量

set @oldContent = convert( varbinary(200),'这是测试数据');--给原始变量赋值

set @newContent = encryptbycert(cert_id('test_cert'),@oldContent)--通过证书加密数据 test_cert  证书名

select @newContent --加密查询

select convert(varchar(200),decryptbycert(cert_id('test_cert'),@newContent ,N'test_cert')) as [ts] --解密查询test_cert  证书名 N'test_cert'  证书密码

十三:表示例

create table usertest(id int primary key identity(20,1),username varbinary(20),usermoney int)

insert into usertest (username,usermoney) values('aaa',encryptbycert(cert_id('test_cert'),'200'))

insert into usertest (username,usermoney) values('bbb',encryptbycert(cert_id('test_cert'),'300') )

insert into usertest (username,usermoney) values('ccc',encryptbycert(cert_id('test_cert'),'400') )

insert into usertest (username,usermoney) values('ddd',encryptbycert(cert_id('test_cert'),'500') )

正确插入数据

insert into usertest (username,usermoney) values('aaa',encryptbykey(key_guid('sy_key1_test'),'200'))

insert into usertest (username,usermoney) values('bbb',encryptbykey(key_guid('sy_key1_test'),'300') )

insert into usertest (username,usermoney) values('ccc',encryptbykey(key_guid('sy_key1_test'),'400') )

insert into usertest (username,usermoney) values('ddd',encryptbykey(key_guid('sy_key1_test'),'500') )

select id,username,cast(decryptbykey(usermoney) as varchar(20)) as 'test' from usertest

通过验证器加入数据

加数据方法     Encryptbykey(key_guid(‘证书名字’),加密值,使用验证器,’验证器的值’)

insert into usertest (username,usermoney) values('aaa',encryptbykey(key_guid('sy_key1_test'),'600',1,'20') )

insert into usertest (username,usermoney) values('bbb',encryptbykey(key_guid('sy_key1_test'),'300',1,'21') )

insert into usertest (username,usermoney) values('ccc',encryptbykey(key_guid('sy_key1_test'),'400',1,'22') )

insert into usertest (username,usermoney) values('ddd',encryptbykey(key_guid('sy_key1_test'),'500',1,'23') )

解密方法

Cast(Decryptbykey(解密列1,1,cast(验证器值 as varcahar(100)))  as varchar(200))

select id,username,cast(decryptbykey(usermoney,1,cast(id as varchar(3))) as varchar(20)) as 'test' from usertest

sqlser 2005 对称加密,非对称加密笔记的更多相关文章

  1. 第十四章 调试及安全性(In .net4.5) 之 对称及非对称加密

    1. 概述 本章内容包括:对称及非对称加密算法..net中的加密类.使用哈希操作.创建和管理签名认证.代码访问权限 和 加密字符串. 2. 主要内容 2.1 使用对称和非对称加密 ① 对称加密:使用同 ...

  2. Java进阶(八)Java加密技术之对称加密 非对称加密 不可逆加密算法

    对称加密 非对称加密 不可逆加密算法 根据密钥类型不同可以将现代密码技术分为两类:对称加密算法(私钥密码体系)和非对称加密算法(公钥密码体系). 1 对称加密算法 原理 对称加密算法中,数据加密和解密 ...

  3. HTTPS加密那点事-对称、非对称加密、数字证书

    转自:[漫画]https 加密那点事 首先,HTTP协议的缺点:没有对数据进行加密,都是明文传输的.如果要改进这种明文传输的协议,该如何做呢? 对称加密: 在每次发送真实数据之前,服务器先生成一把密钥 ...

  4. C#.NET中对称和非对称加密、解密方法汇总--亲测可用

    C#.NET中对称和非对称加密.解密方法汇总--亲测可用   在安全性要求比较高的系统中都会涉及到数据的加密.解密..NET为我们封装了常用的加密算法,例如:MD5,DES,RSA等.有可逆加密,也有 ...

  5. 对称、非对称加密算,openssl生成证书(笔记)

    对称加密算法 1.密钥只有一个,加密和解密都需要同一个密钥2.DES,IDEA,AES3.明文+密钥=密文, 密文+密钥=明文4.加密速度快,系统开销小,适用大量数据的加密 非对称加密算法1.密钥由公 ...

  6. 个人理解c#对称加密 非对称加密 散列算法的应用场景

    c#类库默认实现了一系列加密算法在System.Security.Cryptography; 命名空间下 对称加密 通过同一密匙进行加密和解密.往往应用在内部数据传输情况下.比如公司a程序 和B程序 ...

  7. Android Keystore 对称-非对称加密

    Android数据加密: Anroid数据加密方式 Android 提供了 KeyStore 等可以长期存储和检索加密密钥的机制,Android KeyStore 系统特别适合于存储加密密钥. “An ...

  8. 对称与非对称加密;SSL;HTTPS;AJP

    1.对称加密就是加密与解密的时候都是用一个密码 2.非对称加密,有一对密码A,B:用A加密就得用B解密,相对的用B加密就得用A解密 3.公钥与私钥,这一对密码,随便拿一个公布出去,那个就是公钥,剩下一 ...

  9. [svc]对称加密/非对称加密细枝末节-如何做到数据传输的authentication/data integrity/confidentiality(私密)

    对称/非对称/混合加密的冷知识 数据在互联网上传输,要考虑安全性. 讲到安全,要从三方面考虑: 1.authentication 每一个IP包的认证,确保合法源的数据 2.data integrity ...

随机推荐

  1. tomcat配置虚拟路径保存、访问图片

    一些项目中往往需要上传一些图片文件之类,一般不建议直接保存在数据库内,往往是讲图片等资源保存在服务器的某个文件夹下,传统做法是上传到部署目录下,通过相对路径进行访问.这样当我们系统需要进行升级,进行全 ...

  2. WPF 完美截图 <一>

    最近比较懒,一直没继续,此处省略一万字,下面开始正题. 简单介绍下截图的思路: 核心是利用 public CroppedBitmap(BitmapSource source, Int32Rect so ...

  3. python基础-------模块与包(三)正则表达式

    re模块正则表达式 正则表达式常用符号: [ re模块使用方法]: match(string[, pos[, endpos]]) | re.match(pattern, string[, flags] ...

  4. python基础-------函数(一)

    一 为何要有函数?不加区分地将所有功能的代码垒到一起, 问题是: 代码可读性差 代码冗余 代码可扩展差 如何解决?函数即工具,事先准备工具的过程是定义函数,拿来就用指的就是函数调用 结论:函数使用必须 ...

  5. PEP8

    1.规则要求 https://www.python.org/dev/peps/pep-0008 2.工具 https://github.com/jcrocholl/pep8 3.基本使用方法 测试自己 ...

  6. 腾讯课堂web零基础

    utf是国际编码 gb2312 国人发明的 gbk 补充集 想看网站源代码可以按F12 <meta name ='keywords' content='设置关键字'> <meta n ...

  7. PyCharm教程

    1.PyCharm3.0默认快捷键 2.PyCharm默认模板设置 3.字体设置 1.PyCharm3.0默认快捷键(翻译的)PyCharm Default Keymap 1.编辑(Editing) ...

  8. 2017EIS CTFwriteup

    EIS2017也就是2017年高校网络信息安全管理 运维挑战赛,全国一百多所高校参赛,侥幸拿了个地区三等奖,事先不知道理论赛占分比,不然就会是二等奖(吐槽),生活没有如果,下次努力吧. 比赛已经结束大 ...

  9. webpack之前端性能优化(史上最全,不断更新中。。。)

    最近在用webpack优化首屏加载性能,通过几种插件之后我们上线前后的速度快了一倍,在此就简单的分享下吧,先上个优化前后首屏渲染的对比图. 可以看到总下载时间从3800ms缩短到1600ms. 我们在 ...

  10. jquery 三级关联选择效果

    在网页制作中,三级关联选择经常遇到,于是归纳了一个进行参考 代码如下: <!DOCTYPE html> <html lang="en"> <head& ...