SQL 2005加密資料方法
--Author: liangCK 小樑<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
--示例一,使用證照加密資料.
--建立測試資料表
CREATE TABLE tb(ID int IDENTITY(1,1),data varbinary(8000));
GO
--建立證照一,該證照使用資料庫主金鑰來加密
CREATE CERTIFICATE Cert_Demo1
WITH
SUBJECT=N'cert1 encryption by database master key',
START_DATE='<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2008-01-01',
EXPIRY_DATE='2008-12-31'
GO
--建立證照二,該證照使用密碼來加密
CREATE CERTIFICATE Cert_Demo2
ENCRYPTION BY PASSWORD='liangCK.123'
WITH
SUBJECT=N'cert1 encrption by password',
START_DATE='2008-01-01',
EXPIRY_DATE='2008-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='2008-01-01',
EXPIRY_DATE='2008-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
相關文章
- SQL2000附加SQL2005資料具體方法SQL
- SQL Server 2005中插入XML資料的三種方法SQLServerXML
- SQL Server 2000/2005資料字典生成方法SQLServer
- SQL2005誤刪除資料的恢復方法SQL
- sql server 2005資料庫快照SQLServer資料庫
- SQL 2005 中新的資料型別SQL資料型別
- Sql Server 2005資料庫分割槽SQLServer資料庫
- sql server 2005資料庫載入SQLServer資料庫
- SQL Server 和資料庫加密金鑰SQLServer資料庫加密
- sql server 2005 資料修改的內部原理SQLServer
- 爛泥:SQL Server 2005資料庫安裝SQLServer資料庫
- SQL Server 2005對海量資料的處理SQLServer
- SQL Server 2005 常用資料型別詳解SQLServer資料型別
- SQL Server 2005 'Text,nText,image'資料型別SQLServer資料型別
- 匯出Sql server 2005資料庫中某表的資料SQLServer資料庫
- SQL2005轉SQL2000的方法SQL
- 如何建立和還原SQL Server 2005資料庫?SQLServer資料庫
- 在 SQL Server 2005 中配置資料庫郵件SQLServer資料庫
- SQL Server 2005 管理併發資料訪問[zt]SQLServer
- SQL Server 2005+ 中的資料塊種類SQLServer
- SQL2005 匯入其它伺服器資料SQL伺服器
- 建立SQL Server 和資料庫加密金鑰SQLServer資料庫加密
- SQL Server 2005和SQL Server 2000資料的相互匯入SQLServer
- win10資料夾加密的方法Win10加密
- SQL Server 2005 大資料量資料儲存設計思路分享SQLServer大資料
- SQL Server 2005無日誌檔案附加資料庫SQLServer資料庫
- 為SQL 2005中的InterLib新增資料來源SQL
- SQL Server 2005 自動遠端資料庫備份SQLServer資料庫
- SQL Server 2005資料庫中表的遞迴查詢SQLServer資料庫遞迴
- 深入講解SQL Server 2005資料庫中的SMOSQLServer資料庫
- SQL SERVER 2005中的資料參照完整性SQLServer
- sql2005 表與表之間資料複製SQL
- Execl(2003)資料 匯入 SQL Server(2005)SQLServer
- SQL Server 2005資料頁讀取--高階掃描SQLServer
- SQL Server 2005實現資料庫快取依賴SQLServer資料庫快取
- SQL Server 2005 在區域網中共享資料庫SQLServer資料庫
- SQL Server 2005中修改 Server Collation的方法SQLServer
- 如何為資料庫選擇最佳加密方法資料庫加密