sqlser 2005 对称加密,非对称加密笔记
一:对称加密
原始明文---密钥---加密数据---密钥---原始明文
速度快,通过算法将明文混淆,占用系统资源少
二:非对称加密
加密解密速度慢,较高的系统资源占用
三:混合数据加密
加密过程:随机生成对称密钥,使用公钥加密对称密钥。
解密过程:用私钥解开被加密的对称密钥,使用对称密钥解密数据
四:备份,还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 对称加密,非对称加密笔记的更多相关文章
- 第十四章 调试及安全性(In .net4.5) 之 对称及非对称加密
1. 概述 本章内容包括:对称及非对称加密算法..net中的加密类.使用哈希操作.创建和管理签名认证.代码访问权限 和 加密字符串. 2. 主要内容 2.1 使用对称和非对称加密 ① 对称加密:使用同 ...
- Java进阶(八)Java加密技术之对称加密 非对称加密 不可逆加密算法
对称加密 非对称加密 不可逆加密算法 根据密钥类型不同可以将现代密码技术分为两类:对称加密算法(私钥密码体系)和非对称加密算法(公钥密码体系). 1 对称加密算法 原理 对称加密算法中,数据加密和解密 ...
- HTTPS加密那点事-对称、非对称加密、数字证书
转自:[漫画]https 加密那点事 首先,HTTP协议的缺点:没有对数据进行加密,都是明文传输的.如果要改进这种明文传输的协议,该如何做呢? 对称加密: 在每次发送真实数据之前,服务器先生成一把密钥 ...
- C#.NET中对称和非对称加密、解密方法汇总--亲测可用
C#.NET中对称和非对称加密.解密方法汇总--亲测可用 在安全性要求比较高的系统中都会涉及到数据的加密.解密..NET为我们封装了常用的加密算法,例如:MD5,DES,RSA等.有可逆加密,也有 ...
- 对称、非对称加密算,openssl生成证书(笔记)
对称加密算法 1.密钥只有一个,加密和解密都需要同一个密钥2.DES,IDEA,AES3.明文+密钥=密文, 密文+密钥=明文4.加密速度快,系统开销小,适用大量数据的加密 非对称加密算法1.密钥由公 ...
- 个人理解c#对称加密 非对称加密 散列算法的应用场景
c#类库默认实现了一系列加密算法在System.Security.Cryptography; 命名空间下 对称加密 通过同一密匙进行加密和解密.往往应用在内部数据传输情况下.比如公司a程序 和B程序 ...
- Android Keystore 对称-非对称加密
Android数据加密: Anroid数据加密方式 Android 提供了 KeyStore 等可以长期存储和检索加密密钥的机制,Android KeyStore 系统特别适合于存储加密密钥. “An ...
- 对称与非对称加密;SSL;HTTPS;AJP
1.对称加密就是加密与解密的时候都是用一个密码 2.非对称加密,有一对密码A,B:用A加密就得用B解密,相对的用B加密就得用A解密 3.公钥与私钥,这一对密码,随便拿一个公布出去,那个就是公钥,剩下一 ...
- [svc]对称加密/非对称加密细枝末节-如何做到数据传输的authentication/data integrity/confidentiality(私密)
对称/非对称/混合加密的冷知识 数据在互联网上传输,要考虑安全性. 讲到安全,要从三方面考虑: 1.authentication 每一个IP包的认证,确保合法源的数据 2.data integrity ...
随机推荐
- 向TRichEdit插入图片的单元
很简单, 就3个函数, 直接看代码吧 unit RichEditBmp; { 2005-03-04 LiChengbin Added: Insert bitmap or gif into RichEd ...
- Java8一:Lambda表达式教程
1. 什么是λ表达式 λ表达式本质上是一个匿名方法.让我们来看下面这个例子: public int add(int x, int y) { return x + y; } 转成 ...
- 工作中用到的一些shell命令
1.将十进制转换为十六进制 for i in `seq 0 127`; do printf "%02x\n" $i; done
- 【Java框架型项目从入门到装逼】第二节 - Spring框架 AOP的丧心病狂解说,你喜欢露娜的月下无限连吗?
继续上一节的内容,多几个jar包: aop技术是面向切面编程思想,作为OOP的延续思想添加到企业开发中,用于弥补OOP开发过程中的缺陷而提出的编程思想.AOP底层也是面向对象:只不过面向的不是普通的O ...
- Linux系列教程(二十三)——Linux的服务管理
前面我们讲解Linux软件包管理之源码包.脚本安装包时,我们介绍了rpm包和源码包由于安装位置的不同,会对服务的启动造成影响,具体是什么,本篇博客我们来详细介绍. 1.Linux服务管理总览 我们可以 ...
- geotrellis使用(三十五)Cesium加载geotrellis TMS瓦片
前言 做任何事情都不是想象中的那么简单.好久没有更新技术博客了,跟最近瞎忙有很大关系,虽说是瞎忙也抽空研究了些技术. 主要是前端渲染,像原生的WebGL和Cesium.WebGL写了几篇博客,自我感觉 ...
- java如何声明一个数组用来存储随机生成的字母并且保证不重复
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px ...
- JAVA基础3——常见关键字解读(2)
synchronized Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 用法说明 synchronized 关键字,它包括两种用法: ...
- 状态压缩dp第一题
标签: ACM 题目: Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; ...
- Office 365系列 (1)概览:完整的云中Office
Office365(以下简称O365)是一个集Office,企业邮箱,日历,日程管理,音视频会议 ,企业网盘 ,企业协作平台为一体的,旨在提高团队办公效率,减少基础设施投资和IT运维压力的解决方案.在 ...