数据库SQL 数据加密 示例操作
来源:互联网 发布:深蓝软件 编辑:程序博客网 时间:2024/06/05 04:42
-- 示例一, 使用证书加密数据.
-- 建立测试数据表
CREATE TABLE tb(ID int IDENTITY (1,1),data varbinary (8000));
GO
--创建主密钥
create master key encryption by password='!@#$%^654321'
-- 建立证书一, 该证书使用数据库主密钥来加密
CREATE CERTIFICATE Cert_Demo1
WITH
SUBJECT = N'cert1 encryption by database master key' ,
START_DATE = '2009-9-01' ,
EXPIRY_DATE = '2009-12-31'
GO
-- 建立证书二, 该证书使用密码来加密
CREATE CERTIFICATE Cert_Demo2
ENCRYPTION BY PASSWORD = 'liangCK.123'
WITH
SUBJECT = N'cert1 encrption by password' ,
START_DATE = '2009-01-01' ,
EXPIRY_DATE = '2009-12-31'
GO
-- 此时, 两个证书已经建立完, 现在可以用这两个证书来对数据加密
-- 在对表tb 做INSERT 时, 使用ENCRYPTBYCERT 加密
INSERT tb(data)
SELECT ENCRYPTBYCERT ( CERT_ID ( N'Cert_Demo1' ), N' 这是证书1 加密的内容-liangCK' ); -- 使用证书1 加密
INSERT tb(data)
SELECT ENCRYPTBYCERT ( CERT_ID ( N'Cert_Demo2' ), N' 这是证书2 加密的内容-liangCK' ); -- 使用证书2 加密
--ok. 现在已经对数据加密保证了. 现在我们SELECT 看看
SELECT * FROM tb ;
-- 现在对内容进行解密显示.
-- 解密时, 使用DECRYPTBYCERT
SELECT [证书1 解密] = CONVERT ( NVARCHAR (50), DECRYPTBYCERT ( CERT_ID ( N'Cert_Demo1' ),data)),
-- 使用证书2 解密时, 要指定DECRYPTBYCERT 的第三个参数,
-- 因为在创建时, 指定了ENCRYPTION BY PASSWORD.
-- 所以这里要通过这个密码来解密. 否则解密失败
[证书2 解密] = CONVERT ( NVARCHAR (50), DECRYPTBYCERT ( CERT_ID ( N'Cert_Demo2' ),data, N'liangCK.123' ))
FROM tb ;
-- 我们可以看到, 因为第2 条记录是证书2 加密的. 所以使用证书1 将无法解密. 所以返回NULL
/*
证书1 解密 证书2 解密
-------------------------------------------------- --------------------------------------------------
这是证书1 加密的内容-liangCK NULL
NULL 这是证书2 加密的内容-liangCK
(2 行受影响)
*/
GO
-- 删除测试证书与数据表
DROP CERTIFICATE Cert_Demo1;
DROP CERTIFICATE Cert_Demo2;
DROP TABLE tb;
GO
-- 示例二, 使用对称密钥加密数据,
-- 对称密钥又使用证书来加密.
-- 创建测试数据表tb
CREATE TABLE tb(ID int IDENTITY (1,1),data varbinary (8000));
GO
-- 建立证书, 该证书用于加密对称密钥.
CREATE CERTIFICATE Cert_Demo
ENCRYPTION BY PASSWORD = N'liangCK.123'
WITH
SUBJECT = N'cert encryption by password' ,
START_DATE = '2009-01-01' ,
EXPIRY_DATE = '2009-12-31'
GO
-- 建立对称密钥
CREATE SYMMETRIC KEY Sym_Demo
WITH
ALGORITHM=DES -- 使用DES 加密算法
ENCRYPTION BY CERTIFICATE Cert_Demo -- 使用Cert_Demo 证书加密
GO
-- 要使用Sym_Demo 对称密钥. 必需使用OPEN SYMMETRIC KEY 来打开它
OPEN SYMMETRIC KEY Sym_Demo
DECRYPTION BY CERTIFICATE Cert_Demo
WITH PASSWORD = N'liangCK.123'
-- 插入加密数据
INSERT tb(data)
SELECT ENCRYPTBYKEY ( KEY_GUID ( N'Sym_Demo' ), N' 这是加密的数据, 能显示出来吗?' )
-- 关闭密钥
CLOSE SYMMETRIC KEY Sym_Demo
-- 插入完加密数据, 现在使用SELECT 来查询一下数据
SELECT * FROM tb
GO
-- 现在来解密此数据
-- 同样, 还是要先打开对称密钥
OPEN SYMMETRIC KEY Sym_Demo
DECRYPTION BY CERTIFICATE Cert_Demo
WITH PASSWORD = N'liangCK.123'
SELECT CONVERT ( NVARCHAR (50), DECRYPTBYKEY (data)) -- 这里可见, 数据已经解密出来了.
FROM tb
CLOSE SYMMETRIC KEY Sym_Demo
GO
-- 删除测试
DROP SYMMETRIC KEY Sym_Demo
DROP CERTIFICATE Cert_Demo
DROP TABLE tb
-- 示例三, 还有一种方法加密数据更简单
-- 就是使用EncryptByPassPhrase
-- 建立测试数据表tb
CREATE TABLE tb(ID int IDENTITY (1,1),data varbinary (8000));
GO
INSERT tb(data)
SELECT EncryptByPassPhrase ( N' 这是密码, 用来加密的' , N' 这是要加密的内容' );
-- 解密
SELECT CONVERT ( NVARCHAR (50), DECRYPTBYPASSPHRASE ( N' 这是密码, 用来加密的' ,data))
FROM tb
GO
DROP TABLE tb
- 数据库SQL 数据加密 示例操作
- sql 2005数据库加密 示例
- sql 2005数据库加密 示例
- 数据库sql 语言一般操作示例
- Android 数据库加密 SQL加密
- 如何在SQL Server数据库中加密数据
- 如何在SQL Server数据库中加密数据
- 如何在SQL Server数据库中加密数据
- 腾讯云数据库团队:SQL Server 数据加密功能解析
- SQL远程连接数据库进行数据操作
- SQL指令 数据库表数据的操作
- SQL server 数据库中的数据操作
- java批量操作sql替换数据库数据
- (二):数据定义语言之数据库操作示例
- sql 2005数据库加密
- ------SQL数据库加密-------------
- SQL数据库加密方法
- SQL数据库加密方法
- 数据仓库项目常见综合型问题具体分析
- Management Studio Express下载地址
- [转载]HTTP协议Content Lenth限制漏洞导致拒绝服务攻击
- 0_1 背包动态规划详解
- 模块——滑雪场
- 数据库SQL 数据加密 示例操作
- 大学总结(一)
- mysql 基本命令
- pku 3373 Changing Digits(记忆化搜索)
- 一般的排序方法C++
- 三十句瞬间使你清醒的话
- jboss portal(AJAX)
- 十二大著名法则
- 一般的排序方法C++