澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:SQL语句计算,非对称加密

2019-05-05 作者:数据库网络   |   浏览(135)

一、数据库定义

数据库(Database)是依据数据结构来组织、存款和储蓄和管理数据的库房。数据库的操作分为二种样式:壹种是直接在数据库管理工科具图形化界面举办操作;一种是运用数据库脚本举办操作,数据库脚本能够直接在数据库管理工科具中操作,也足以在dos命令窗口中操作。

数量表定义

数据表(或称表)是数据库最重视的组成都部队分之壹,数据库中以表为公司单位存款和储蓄数据,数据库只是三个框架,数据表才是其实质内容。数据库管理工科具中得以展示数据库中的全体数据表,数据表是数据库中二个十分主要的目的,是别的对象的功底。

 第二步、创设文件和文件组

1:对称加密 

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

     速度快,通过算法将公开混淆,占用系统财富少

SQLServer

2、数据库成立

方式1:数据库图形化管理工科具创立数据库步骤:右键点击数据库-》点击新建数据库-》输入数据库名称,可自定义数据库全部者(设置什么样人方可动用数据库)、逻辑名称、伊始大小(数据库初步化大小)、自拉长大小(数据库新增扩充少的时候以每便多大存储量增加)、路线(数据库数据文件路径,关系到今后的数据库备份,迁移,还原等操作)、文件名(数据库的文件名称)、日志等属性,左上角的选项和例行能够运用系统暗许的-》点击分明就可以创造数据库

澳门新萄京官方网站 1

澳门新萄京官方网站 2

办法2:数据库脚本创制数据库步骤:编写脚本-》在数据库管理工具中推行脚本-》刷新数据库就能够展现;

 

 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

 

 

创立结果示举例下:

澳门新萄京官方网站 3

创设数据表

情势1:展开数据库管理工科具-》登录-》采纳数据库-》选取表-》右键点击,选择新建表-》在右臂视图中输入列名、数据类型、是还是不是可空、在列属性中设置须求的属性-》点击保存(或ctrl s)-》保存成功,刷新就能够显示

澳门新萄京官方网站 4

澳门新萄京官方网站 5

方法2:使用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

 示例结果如下:澳门新萄京官方网站 6

-- 希图干活,模拟数据。

 

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  

 

 

二:非对称加密

     加密解密速度慢,较高的系统财富占用

 

  1. SQLSever提供了那个多的系统函数,利用该系列函数能够访问SQLServer系统中的音讯,而无须使用SQL语句询问。
  2. suser_name():重返用户的登入名;
  3. user_name():基于钦命的标志号重临数据库用户名;
  4. db_name(): 重临数据库名称;
  5. is_number('db_owner'): 是或不是为数据库角色;
  6. convert(int,'伍'): 数据类型调换;
  7. sys.databases     SQL Server中的全数数据库
  8. sys.sql_logins     SQL Server中的全数登陆名
  9. information_schema.tables     当前数据库中的表
  10. information_schema.columns  当前数据库中的列
  11. sys.all_columns    用户定义对象和类别的持有列的一路
  12. sys.database_principals    数据库中各种权限或列卓殊权限
  13. sys.database_files       存款和储蓄在数据库中的数据库文件
  14. sysobjects                 数据库中制造的每种对象
  15. 攻击者最常用的积攒进度是xp_cmdshell,那一个蕴藏进程允许用户实践操作系统的吩咐;假使 xp_cmdshell 'net user test test /add',攻击者就能够选取xp_cmdshell垄断(monopoly)服务器。
  16.  and 1=(select IS_S安德拉VROLEMEMBEBMWX三(’sysadmin’)) 判别是还是不是是系统权限;
  17. 查看数据库版本 @@version;
  18. 获得元数据:INFOTucsonMATION_SCHEMA.TABLES与INFORMATION_SCHEMA.COLUMNS视图获得数据库表以及表的字段。
  19. select TABLE_NAME from INFORMATION_SCHEMA.TABLES   取妥善前数据库表;
  20. select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='Student' 取得Student表字段;

叁、数据库删除

措施一:直接在数据库管理工科具中右键-》选取删除

澳门新萄京官方网站 7

 

方法贰:在数据库管理工具中多少脚本:drop database 数据库名

去除数据表

方法一:打开数据库处理工具-》登入-》选取数据库-》采用表-》右键点击,选用删除-》点击弹出框中的分明删除-》刷新数据库

澳门新萄京官方网站 8澳门新萄京官方网站 9

艺术二:使用T-SQL脚本删除:drop table test2;

澳门新萄京官方网站 10

## -- 一、添Gavin件组

 

alter database User_DB add filegroup know1 

alter database User_DB add filegroup know2

alter database User_DB add filegroup know3  

 

3:混合数据加密

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

     解密进程:用私钥解开被加密的相反相成密钥,使用对称密钥解密数据

 

MYSQL

4、数据库修改

办法一:选中数据库-》右键-》采取重命名-》输入数据库新名称

澳门新萄京官方网站 11

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

澳门新萄京官方网站 12

修改数据表

艺术1:打开数据库管理工具-》登入-》选择数据库-》选择表-》右键点击,采用重命名-》重新输入表名-》按enter键明确-》刷新可查看新表名

 澳门新萄京官方网站 13

艺术二:使用T-SQL脚本修改表名:exec sp_rename 'test1','test2';

澳门新萄京官方网站 14

## -- 贰、创建数据库文件到文件组

 

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

 

 

alter database User_DB add file    

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

to filegroup know3  

 

## --三、右键到要分区的表>> 存款和储蓄--- >> 创制分区--- >>突显向导视图--- >> 下一步--- >> 下一步

 

肆:备份,还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’;

  1.   version()版本号
  2. 元数据:Mysql 伍.0会同以上版本提供了INFO昂CoraMATION_SCHEMA。
  3. LIMIT i,j   LIMIT前面跟二个或四个整数参数,强制select语句重返钦定的记录行(记录行i 一到j i)
  4. 询问用户数据库名称:select SCHEMA_NAME from INFORMATION_SCHEMA.SCHEMATA LIMIT 0,壹 检索第1行
  5. 询问当前数据库表:select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA= (select DATABASE()) limit 0,1
  6. 询问内定表的富有字段:select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='Student' LIMIT 0,1
  7.  load_file()函数读取文件操作:union select 一,load_file(’/etc/password‘),3,4,5,6 #
  8. 一些防注入的语句差别意单引号的出现,那么使用:union select 1,load_file( '/etc/password'十陆进制调换结果),3,四,五,陆 #来绕过;
  9. 写文件操作:select '<?php phpinfo();?>' into outfile 'c:wwwroot1.php'
  10. 读写文件供给具备FIFE权限,并且文件必须为全路径名称。
  11. 设若急需三回询问七个数据,能够行使concat()或concat_ws()函数来成功。
  12. concat()函数:select name from student where id=1 union select concat(user(),',',database(),',',version());
  13. 地方也得以调换为十陆进制:select name from student where id =壹 union select concat(user(),0x二c,database(),0x2c,version());
  14. concat_ws()函数:select name from student where id =1 union select concat_ws(0x2c,user(),database(),version())
  15. user()用户名
  16. current_user()当前用户
  17. system_user()系统用户
  18. database()数据库名
  19. version()版本
  20. @@version_compile_os()操作系统
  21. group_concat() 重返带有来自2个组的连天的非NULL值的字符串结果。

伍、查数据库查看

情势一:在数据库管理工科具中当选数据库-》右键属性-》查看数据库相关配置音信

澳门新萄京官方网站 15

澳门新萄京官方网站 16

艺术二:在数据库管理工科具中输入数据库脚本查看,一下点数两种常用的数据库查看音信

--使用目录视图查看数据库新闻
--使用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';

澳门新萄京官方网站 17

 

--使用函数查看数据状态
use testss
select databasepropertyex('test二','Status') as 'test数据库状态'

澳门新萄京官方网站 18

查看数据表

--查询数据库下具有的表
--xtype='U'查询用户表
select name from sysobjects where xtype='U'
-- xtype='S'查询系统表
select name from sysobjects where xtype='S'

--查看test1表的持有音讯
exec sp_help test1;

--查询test一表中具有的列
select * from syscolumns where id=Object_Id('test1')

--查看test一表中保有列数据
select * from test1;

# 第壹步、施行生成的创始分区sql

 

USE [User_DB]

GO

BEGIN TRANSACTION

5:创立数据库主密钥(必要手动成立数据库主密钥)

    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'

 

 

陆、数据库优缺点

亮点:易用性、适合遍布式协会的可伸缩性、用于决策帮助的数据酒馆成效、与广大其它服务器软件紧凑关系的集成性、卓越的性价比等。

缺陷:壹开放性。只好运转在微软的windows平台,未有丝毫的开放性可言。

      贰可伸缩性,并行性。并行实践和现成模型并不成熟,很难管理日益增添的用户数和数据卷,伸缩性有限。
      3属性稳固。SQLServer当用户连接多时品质会变的很差,并且不够牢固。
      4使用风险。SQLServer完全重写的代码,经历了长时间的测试,不断延迟,多数作用需时日来验证。并不充裕卓殊早期产品。使用需求冒一定危害。
      伍客户端帮助及利用方式。只援助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')

 

陆:目录视图中查看数据库密钥消息

select * from sys.symmetric_keys

 

 

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

## -- 2、创设分区消除方案

CREATE PARTITION SCHEME [konwPartitionSolution]

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

 

7:创设证书

 Create certificate cert_mycert;--成立证书

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

 with subject 标题

澳门新萄京官方网站:SQL语句计算,非对称加密笔记。 

 成立证书时效性,必要仓库储存进程等方法手动验证

 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  

## -- 叁、成立索引

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])

 

八:与证件相关的函数

Encyrptbycert(id,’cleartext’);

 

Cert_id(‘'myfirst_cert’)

 

## -- 四、删除索引

DROP INDEX

 [ClusteredIndex_on_konwPartitionSolution_635706905441367386]

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

 

COMMIT TRANSACTION  

 

玖:成立非对称密钥

运用sn.exe工具也能够成立

 

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

 

# 第二步、查看分区结果

## --查看分区表中,各种非空分区存在的行数

 

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

from test

group by  $partition.[knowPartitionFunc] (time)

 

 

 

## --查看分区数据

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

from test 

 

 

十:成立对称密钥

   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'

 

101:查询密钥

一:张开密钥指令

open symmetric key sy_key1 decryption by password ='sy_key1'

 

查询密钥

select * from sys.openkeys

 

闭馆密钥

 close symmetric key sy_key1_test

 

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

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(解密列壹,一,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

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

## --一、创立文件组和呼应的公文。

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

 

## --②、给分区方案加多文件组

alter partition scheme konwPartitionSolution

NEXT USED know4

 

## --三、给分区函数增添一个边界值

alter partition function knowPartitionFunc()

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

本文由澳门新萄京官方网站发布于数据库网络,转载请注明出处:澳门新萄京官方网站:SQL语句计算,非对称加密

关键词: