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
相關文章
- sql server 2005資料庫快照SQLServer資料庫
- sql server 2005 資料修改的內部原理SQLServer
- 如何建立和還原SQL Server 2005資料庫?SQLServer資料庫
- SQL Server 2000/2005/2008刪除或壓縮資料庫日誌的方法SQLServer資料庫
- 已安裝 SQL Server 2005 Express 工具。若要繼續,請刪除 SQL Server 2005 Express 工具SQLServerExpress
- 如何將SQL Server 2000備份的資料庫檔案還原(升級)為SQL Server 2005或更高版本的資料庫?SQLServer資料庫
- SQL Server 2005效能調整一(zt)SQLServer
- SQL Server 2005效能調整二(zt)SQLServer
- win10資料夾加密的方法Win10加密
- 【資料庫資料恢復】SQL server資料庫被加密怎麼辦?如何恢復?資料庫資料恢復SQLServer加密
- 如何為資料庫選擇最佳加密方法資料庫加密
- 資料夾如何加密碼最簡單的方法 電腦怎麼給資料夾加密加密密碼
- 伺服器SQL server資料庫被加密恢復方案伺服器SQLServer資料庫加密
- Android SQL資料庫查詢方法 query( )AndroidSQL資料庫
- win10安裝sql2005教程圖解_win10專業版怎麼安裝sql2005Win10SQL圖解
- 如何對U盤檔案資料加密,U盤加密方法教程分享加密
- SQL2005、2008、2000 清空刪除日誌SQL
- 資料加密加密
- SQL Server 2005詳細安裝過程及配置SQLServer
- SQL Server2005使用CTE實現遞迴QCSQLServer遞迴
- 資料庫加密資料庫加密
- 資料夾能直接設定密碼嗎 資料夾加密的常用方法密碼加密
- SQL Server 2005的複製儲存過程選項BYSQLServer儲存過程
- 資料加密(對稱加密和非對稱加密)加密
- 資料加密-國密SM2對資料進行加密加密
- Microsoft SQL Server 2005中查詢優化器使用的統計資訊二(zt)ROSSQLServer優化
- Microsoft SQL Server 2005中查詢優化器使用的統計資訊一(zt)ROSSQLServer優化
- Microsoft SQL Server 2005中查詢優化器使用的統計資訊三(zt)ROSSQLServer優化
- 2.9.2 透明資料加密加密
- ORACLE資料加密(轉)Oracle加密
- JuiceFS 資料加密原理UI加密
- Oracle透明資料加密Oracle加密
- SQL SERVER 2012資料庫自動備份的方法SQLServer資料庫
- SQL在自增列插入指定資料的操作方法SQL
- mssql sqlserver 使用sql指令碼 清空所有資料庫表資料的方法分享SQLServer指令碼資料庫
- SQL資料庫SQL資料庫
- 【SQL】18 SQL NULL 函式、SQL 通用資料型別、SQL 用於各種資料庫的資料型別SQLNull函式資料型別資料庫
- 編碼、摘要和加密(三)——資料加密加密
- 加密訪問資源方法總結加密