云顶娱乐平台 18

【云顶娱乐平台】sqlser 2005 对称加密,非对称加密笔记

四、数据库修改

方式一:选中数据库-》右键-》选择重命名-》输入数据库新名称

云顶娱乐平台 1

方式二:在数据库管理工具中输入脚本修改:exec
sp_renamedb ‘testss’,’test1’或者alter database test1 modify
name=test2 

云顶娱乐平台 2

创建数据表

方式一:打开数据库管理工具-》登录-》选择数据库-》选择表-》右键点击,选择新建表-》在右边视图中输入列名、数据类型、是否可空、在列属性中设置需要的属性-》点击保存(或ctrl+s)-》保存成功,刷新即可显示

云顶娱乐平台 3

云顶娱乐平台 4

方式二:使用T-SQL脚本新建表

 1 --数据库声明
 2 use testss
 3 --建表语法声明
 4 create table test1
 5 (
 6 --字段声明
 7 id int identity(1,1) not null,
 8 name nvarchar(50) null,
 9 sex nvarchar(50) null,
10 age nvarchar(50) null,
11 classid int,
12 primary key clustered(id asc) with(ignore_dup_key=off) on [primary]    --主键索引声明
13 )on [primary]
14 
15 --字段注释声明
16 exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'id主键' , @level0type=N'SCHEMA',
17 @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'id';
18 
19 exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名' , @level0type=N'SCHEMA',
20 @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'name';
21 
22 exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'性别' , @level0type=N'SCHEMA',
23 @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'sex';
24 
25 exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'年龄' , @level0type=N'SCHEMA',
26 @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'age';
27 
28 exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'班级id' , @level0type=N'SCHEMA',
29 @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'classid';
30 
31 go

 示例结果如下:云顶娱乐平台 5

## — 2、创建数据库文件到文件组

 

alter database User_DB add file    

(name=N’know1′,filename=N’G:DBfenquknow1.ndf’,size=5Mb,filegrowth=5mb, maxsize=1gb)

to filegroup know1

 

 

alter database User_DB add file    

(name=N’know2′,filename=N’G:DBfenquknow2.ndf’,size=5Mb,filegrowth=5mb, maxsize=1gb)

to filegroup know2

【云顶娱乐平台】sqlser 2005 对称加密,非对称加密笔记。 

 

alter database User_DB add file    

(name=N’know3′,filename=N’G:DBfenquknow3.ndf’,size=5Mb,filegrowth=5mb, maxsize=1gb)

to filegroup know3  

 

## –3、右键到要分区的表>> 存储— >> 创建分区— >>显示向导视图— >> 下一步— >> 下一步

 

八:与证书相关的函数

Encyrptbycert(id,’cleartext’);

 

Cert_id(‘’myfirst_cert’)

 

六、数据库优缺点

优点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。

缺点:1开放性。只能运行在微软的windows平台,没有丝毫的开放性可言。

     
2可伸缩性,并行性。并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。
     
3性能稳定性。SQLServer当用户连接多时性能会变的很差,并且不够稳定。
     
4使用风险。SQLServer完全重写的代码,经历了长期的测试,不断延迟,许多功能需时间来证明。并不十分兼容早期产品。使用需要冒一定风险。
      5客户端支持及应用模式。只支持C/S模式。

数据表定义

数据表(或称表)是数据库最重要的组成部分之一,数据库中以表为组织单位存储数据,数据库只是一个框架,数据表才是其实质内容。数据库管理工具中可以显示数据库中的所有数据表,数据表是数据库中一个非常重要的对象,是其他对象的基础。

## — 1、创建分区函数

CREATE PARTITION FUNCTION [knowPartitionFunc](datetime) 

AS RANGE

LEFT FOR VALUES (N’2014-01-01T00:00:00′, N’2014-02-01T00:00:00′, N’2014-03-01T00:00:00′)

 

一:对称加密 

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

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

二、数据库创建

方式一:数据库图形化管理工具创建数据库步骤:右键点击数据库-》点击新建数据库-》输入数据库名称,可自定义数据库所有者(设置哪些人可以使用数据库)、逻辑名称、初始大小(数据库初始化大小)、自增长大小(数据库新增数据的时候以每次多大存储量增长)、路径(数据库数据文件路径,关系到以后的数据库备份,迁移,还原等操作)、文件名(数据库的文件名称)、日志等属性,左上角的选项和常规可以使用系统默认的-》点击确定即可创建数据库

云顶娱乐平台 6

云顶娱乐平台 7

方式二:数据库脚本创建数据库步骤:编写脚本-》在数据库管理工具中执行脚本-》刷新数据库即可显示;

 

 1 --创建数据库
 2 create database testss
 3 on 
 4 (
 5     name='testss',
 6     filename='D:SqlTestblogtestss.mdf',
 7     size=10240kb,
 8     maxsize=102400kb,
 9     filegrowth=1024kb
10 )
11 log on
12 (
13     name='testlog',
14     filename='D:SqlTestblogtestlog.ldf',
15     size=10240kb,
16     maxsize=102400kb,
17     filegrowth=1024kb
18 )
19 go

 

 

创建结果示例如下:

云顶娱乐平台 8

删除数据表

方式一:打开数据库管理工具-》登录-》选择数据库-》选择表-》右键点击,选择删除-》点击弹出框中的确定删除-》刷新数据库

云顶娱乐平台 9云顶娱乐平台 10

方式二:使用T-SQL脚本删除:drop table
test2;

云顶娱乐平台 11

## — 1、添加文件组

 

alter database User_DB add filegroup know1 

alter database User_DB add filegroup know2

alter database User_DB add filegroup know3  

 

九:创建非对称密钥

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

 

Create asymmetric key asy_key1 With algorithm
= rsa_2048 Encryption by password=’asy_key1′

 

五、查数据库查看

方式一:在数据库管理工具中选中数据库-》右键属性-》查看数据库相关配置信息

云顶娱乐平台 12

云顶娱乐平台 13

方式二:在数据库管理工具中输入数据库脚本查看,一下列举几种常用的数据库查看信息

–使用目录视图查看数据库信息
–使用sys.database_files查看有关数据库文件的信息
select * from
sys.database_files;
–使用sys.filegroups查看有关数据库组的信息
select * from sys.filegroups;
–使用sys.master_files
查看数据库文件的基本信息和状态信息
select * from sys.master_files;
–使用sys.databases
数据库和文件目录视图查看有关数据库的基本信息
select * from sys.databases where
name=’testss’;

云顶娱乐平台 14

 

–使用函数查看数据状态
use testss
select
databasepropertyex(‘test2′,’Status’) as ‘test数据库状态’

云顶娱乐平台 15

修改数据表

方式一:打开数据库管理工具-》登录-》选择数据库-》选择表-》右键点击,选择重命名-》重新输入表名-》按enter键确定-》刷新可查看新表名

 云顶娱乐平台 16

方式二:使用T-SQL脚本修改表名:exec
sp_rename ‘test1′,’test2’;

云顶娱乐平台 17

# 第三步、查看分区结果

## –查看分区表中,每个非空分区存在的行数

 

select $partition.[knowPartitionFunc](time) as partitionNum,count(*) as recordCount

from test

group by  $partition.[knowPartitionFunc] (time)

 

 

 

## –查看分区数据

select $partition.[knowPartitionFunc](time) as partitionGroupId,*

from test 

 

 

二:非对称加密

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

 

一、数据库定义

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。数据库的操作分为两种形式:一种是直接在数据库管理工具图形化界面进行操作;一种是使用数据库脚本进行操作,数据库脚本可以直接在数据库管理工具中操作,也可以在dos命令窗口中操作。

查看数据表

–查询数据库下所有的表
–xtype=’U’查询用户表
select name from sysobjects where
xtype=’U’
— xtype=’S’查询系统表
select name from sysobjects where
xtype=’S’

–查看test1表的所有信息
exec sp_help test1;

–查询test1表中所有的列
select * from syscolumns where
id=Object_Id(‘test1’)

–查看test1表中所有列数据
select * from test1;

## –3、给分区函数添加一个边界值

alter partition function knowPartitionFunc()

split range(N’2014-04-01T00:00:00′) 

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

select * from sys.symmetric_keys

 

 

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

三、数据库删除

方式一:直接在数据库管理工具中右键-》选择删除

云顶娱乐平台 18

 

方式二:在数据库管理工具中数据脚本:drop
database 数据库名

— 准备工作,模拟数据。

 

insert into

test

values

(‘test’,’2014-01-01′) , 

(‘test’,’2014-02-01′) , 

(‘test’,’2014-03-01′) , 

(‘test’,’2014-04-01′) , 

(‘test’,’2014-05-01′) , 

(‘test’,’2014-06-01′) , 

(‘test’,’2014-07-01′) , 

(‘test’,’2014-08-01′) , 

(‘test’,’2014-09-01′) , 

(‘test’,’2014-10-01′) 

 

select *  from User_DB.dbo.test  

 

 

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

    Create master key encryption by password = ‘password’

create master key encryption by password = ‘databaseTest’    

备份数据库密钥

backup master key to file = ‘D:work
pathdbFiledatabase.bak’ encryption by password = ‘databaseTest’

 

 

# 第二步、执行生成的创建分区sql

 

USE [User_DB]

GO

BEGIN TRANSACTION

十:创建对称密钥

   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

## — 3、创建索引

CREATE CLUSTERED INDEX [ClusteredIndex_on_konwPartitionSolution_635706905441367386] 

ON [dbo].[test] 

(

    [time]

)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF)

 ON [konwPartitionSolution]([time])

 

三:混合数据加密

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

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

 

## — 4、删除索引

DROP INDEX

 [ClusteredIndex_on_konwPartitionSolution_635706905441367386]

  ON [dbo].[test] WITH ( ONLINE = OFF )

 

COMMIT TRANSACTION  

 

七:创建证书

 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  

# 第四步、为已存在的分区表添加新的边界值

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

   备份密钥

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

   Encryption  by password = ‘password’;

   实例backup service master key to file = ‘D:work
pathdbFiledata.bak’ 

    encryption by password = ‘test’

   还原密钥

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

   Decryption by password=’password’;

## — 2、创建分区解决方案

CREATE PARTITION SCHEME [konwPartitionSolution]

 AS PARTITION [knowPartitionFunc] TO ([PRIMARY], [know1], [know2], [know3])

 

 第一步、创建文件和文件组

## –1、创建文件组和对应的文件。

alter database User_DB add filegroup know4

 

alter database User_DB add file    

(name=N’know4′,filename=N’G:DBfenquknow4.ndf’,size=5Mb,filegrowth=5mb, maxsize=1gb)

to filegroup know4

 

## –2、给分区方案添加文件组

alter partition scheme konwPartitionSolution

NEXT USED know4