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

-----------------------------------------------------------------
我看了看,呵呵,以前没有的,宣传一下!!!
...全文
1007 35 打赏 收藏 转发到动态 举报
写回复
用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)
网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。   Bootcfg   bootcfg 命令启动配置和故障恢复(对于大多数计算机,即 boot.ini 文件)。   含有下列参数的 bootcfg 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 bootcfg 命令。   用法:   bootcfg /default  设置默认引导项。   bootcfg /add    向引导列表中添加 Windows 安装。   bootcfg /rebuild  重复全部 Windows 安装过程并允许用户选择要添加的内容。   注意:使用 bootcfg /rebuild 之前,应先通过 bootcfg /copy 命令备份 boot.ini 文件。   bootcfg /scan    扫描用于 Windows 安装的所有磁盘并显示结果。   注意:这些结果被静态存储,并用于本次会话。如果在本次会话期间磁盘配置发生变化,为获得更新的扫描,必须先重新启动计算机,然后再次扫描磁盘。   bootcfg /list   列出引导列表中已有的条目。   bootcfg /disableredirect 在启动引导程序中禁用重定向。   bootcfg /redirect [ PortBaudRrate] |[ useBiosSettings]   在启动引导程序中通过指定配置启用重定向。   范例: bootcfg /redirect com1 115200 bootcfg /redirect useBiosSettings   hkdsk   创建并显示磁盘的状态报告。Chkdsk 命令还可列出并纠正磁盘上的错误。   含有下列参数的 chkdsk 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 chkdsk 命令。   vol [drive:] [ chkdsk [drive:] [/p] [/r]   参数  无   如果不带任何参数,chkdsk 将显示当前驱动器中的磁盘状态。 drive: 指定要 chkdsk 检查的驱动器。 /p   即使驱动器不在 chkdsk 的检查范围内,也执行彻底检查。该参数不对驱动器做任何更改。 /r   找到坏扇区并恢复可读取的信息。隐含着 /p 参数。   注意 Chkdsk 命令需要 Autochk.exe 文件。如果不能在启动目录(默认为 %systemroot%System32)中找到该文件,将试着在 Windows 安装 CD 中找到它。如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动器上使用该命令。 Diskpart   创建和删除硬盘驱动器上的分区。diskpart 命令仅在使用故障恢复控制台时才可用。   diskpart [ /add |/delete] [device_name |drive_name |partition_name] [size]   参数 无   如果不带任何参数,diskpart 命令将启动 diskpart 的 Windows 字符模式版本。   /add   创建新的分区。   /delete   删除现有分区。   device_name   要创建或删除分区的设备。设备名称可从 map 命令的输出获得。例如,设备名称:   DeviceHardDisk0   drive_name   以驱动器号表示的待删除分区。仅与 /delete 同时使用。以下是驱动器名称的范例:   D:   partition_name   以分区名称表示的待删除分区。可代替 drive_name 使用。仅与 /delete 同时使用。以下是分区名称的范例:   DeviceHardDisk0Partition1    大小   要创建的分区大小,以兆字节 (MB)表示。仅与 /add 同时使用。   范例   下例将删除分区: diskpart /delete Device HardDisk0 Partition3 diskpart /delete F:   下例将在硬盘上添加一个 20 MB 的分区:   diskpart /add Device HardDisk0 20   Fixboot

11,850

社区成员

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

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