SQL 2005 数据加密 --来自微软视频教程

being21 2007-07-12 09:44:59
--1.创建数据库主密钥
use master key
go
Create master key
encrypyion by password = 'Password'
go
--2.创建存放加密数据的表
Create table dbo.secTable
(ID int identity primary key,
[data] nvarchar(100))
go
--3.创建数字证书,数字证书的密钥被数据库主密钥加密
Create certificate Tomcert
with
subject = 'Tom Certificate',
expiry_date = '2007-01-01'

--4.创建对称密钥,被用证书对其进行加密
create symmetric key sym_tom
with algorithm = desx encryption by certificate TomCrrt
--5.使用证书解开对称密钥,将数据使用对称密钥加密后存储于表中,完成后关闭对称密钥
open symmetric key sym_Tom decryption by certicate tomcert

insert into sectable (data) values(encryptbykey(key_guid('sym_Tom'),N'TOM1'))
insert into sectable (data) values(encryptbykey(key_guid('sym_Tom'),N'TOM2'))
insert into sectable (data) values(encryptbykey(key_guid('sym_Tom'),N'TOM3'))

close symmetric key sym_Tom

--6.查看被加密的数据内容
select * from dbo.SecTable

--7.使用证书解开对称密钥,解密数据表中的数据,完成后关闭对称密钥

select ID,Cast(DecryptByKey(Data) as NVarchar) from dbo.secTable

Close SymmetRic key Sym_Tom

-----------------------------------------------------------------
我看了看,呵呵,以前没有的,宣传一下!!!
...全文
1012 35 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
耗子 2008-09-26
  • 打赏
  • 举报
回复
楼主的解释有些问题,纠正下

EXPIRY_DATE = 'mm/dd/yyyy' ,是指证书过期的日期。如果未指定,则将 EXPIRY_DATE 设置为 START_DATE 一年之后的日期。

START_DATE = 'mm/dd/yyyy' ,才是证书生效的日期。如果未指定,则将 START_DATE 设置为当前日期。
hackace 2008-05-06
  • 打赏
  • 举报
回复
不性啊,减密后还是一乱码啊
OracleRoob 2007-07-22
  • 打赏
  • 举报
回复
支持一下
anchor49 2007-07-22
  • 打赏
  • 举报
回复
再顶一下,明天收了。
Skyleo_liu 2007-07-20
  • 打赏
  • 举报
回复
这个敢情是很好的~
srgcc 2007-07-20
  • 打赏
  • 举报
回复
支持楼主
TearsInHell 2007-07-20
  • 打赏
  • 举报
回复
学习,收藏了,感谢楼主
lao_bulls 2007-07-20
  • 打赏
  • 举报
回复
试一下。谢谢
DHC_KULOU 2007-07-18
  • 打赏
  • 举报
回复
先学习以下
anchor49 2007-07-17
  • 打赏
  • 举报
回复
呵呵,真的有用么?
bill024 2007-07-16
  • 打赏
  • 举报
回复
再支持一个!
bill024 2007-07-16
  • 打赏
  • 举报
回复
才看到这个帖,支持
being21 2007-07-16
  • 打赏
  • 举报
回复
自己鼎一个!
hb_gx 2007-07-14
  • 打赏
  • 举报
回复
学习
子陌红尘 2007-07-14
  • 打赏
  • 举报
回复
支持一下楼主。
essenza 2007-07-14
  • 打赏
  • 举报
回复
UP
anchor49 2007-07-13
  • 打赏
  • 举报
回复
--先创建一个数据库 database

--1.创建数据库主密钥

use database
Create master key
ENCRYPTION by password = 'p@ssw0rd'

--如果是强密码策略的系统需要写成强密码
--2.创建存放加密数据的表

Create table dbo.secTable
(ID int identity primary key,[data] nvarchar(100))

--3.创建数字证书,数字证书的密钥被数据库主密钥加密

use database
Create certificate Tomcert
with
subject = 'Tom Certificate',
expiry_date = '2007-07-13 10:26:30'

--expiry_date的时间要为将来时间,例如现在时刻是10:00 那么就写10:01,这样这个时间就生效了
--运行后的警告
--警告:您创建的证书尚未生效,生效时间为将来时间

--4.创建对称密钥,被用证书对其进行加密

create symmetric key sym_tom
with ALGORITHM = desx encryption by certificate TomCert

--5.使用证书解开对称密钥,将数据使用对称密钥加密后存储于表中,完成后关闭对称密钥

open symmetric key sym_Tom decryption by certificate TomCert

insert into sectable (data) values(encryptbykey(key_guid('sym_Tom'),N'TOM1'))
insert into sectable (data) values(encryptbykey(key_guid('sym_Tom'),N'TOM2'))
insert into sectable (data) values(encryptbykey(key_guid('sym_Tom'),N'TOM3'))

close symmetric key sym_Tom

--6.查看被加密的数据内容

select * from dbo.SecTable

--结果大概这个样子
select id = 1,data = 'ꈀ䁱䘱ꂿ렿啔ᯉ' union all
select id = 2,data = 'ꈀ䁱䘱ꂿ렿啔ᯉ' union all
select id = 3,data = 'ꈀ䁱䘱ꂿ렿啔ᯉ'

--7.使用证书解开对称密钥,解密数据表中的数据,完成后关闭对称密钥

open symmetric key sym_Tom decryption by certificate TomCert

select ID,Cast(DecryptByKey(Data) as nvarchar) as [data] from dbo.secTable

Close SymmetRic key Sym_Tom

--结果这个样子
select id = 1,data = 'TOM1' union all
select id = 2,data = 'TOM2' union all
select id = 3,data = 'TOM3'

--------------------------------------------------------------------------------
里面确实有缺失何错误的地方,对不住大家了。
我把要注意的问题,写上了。
错误也更正了。
呵呵,做事不严谨阿!!!自我批评。
newqq 2007-07-13
  • 打赏
  • 举报
回复
anchor49 2007-07-13
  • 打赏
  • 举报
回复
对不起了,物品检查一下是不是字打错了!
leo_lesley 2007-07-13
  • 打赏
  • 举报
回复
占位 慢慢看~
加载更多回复(15)

11,850

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧