關(guān)于SQL Server加密與解密的問題
一、PassPhrase加密
1.1、概要簡述
1)對于不涉及證書及密鑰的應(yīng)急的數(shù)據(jù)加密,可以直接基于用戶提供的密碼來加密和解密數(shù)據(jù)。
2)通行短語(PassPhrase)是允許存在空格的密碼。這個PassPhrase不會存儲在數(shù)據(jù)庫中,因而也就意味著不會被使用存儲的系統(tǒng)數(shù)據(jù)"破解"。同時,可以使用空格創(chuàng)建一個長的、易于記憶的句子來加密和解密敏感數(shù)據(jù)。
3)PassPhrase支持的數(shù)據(jù)列類型有nvarchar、varchar、nchar、char、varbinary、binary。
1.2、加密函數(shù)
CREATE FUNCTION dbo.EncryptPass(@EnPass VARCHAR(32))
RETURNS VARBINARY(MAX)
AS
BEGIN
DECLARE @Result VARBINARY(MAX)
SET @Result=EncryptByPassPhrase('HelloWorld',@EnPass)
RETURN @Result
END
1.3、解密函數(shù)
CREATE FUNCTION dbo.DecryptPass(@DePass VARBINARY(MAX))
RETURNS VARCHAR(32)
AS
BEGIN
DECLARE @Result VARCHAR(32)
SET @Result=CONVERT(VARCHAR,DecryptByPassPhrase('HelloWorld',@DePass))
RETURN @Result
END
1.4、結(jié)果測試
SELECT dbo.EncryptPass('測試字符串') AS RESULT
SELECT dbo.DecryptPass(0x0100000045FE8873D07BFB747D33D81D1C1E06CA3EC10D718CF603E395D4493BFBFC5683) AS RESULT
SELECT dbo.DecryptPass(dbo.EncryptPass('測試字符串')) AS RESULT
1.5、執(zhí)行結(jié)果

二、證書加密
2.1、概要簡述
1)證書可以在數(shù)據(jù)庫中加密和解密數(shù)據(jù)。
2)證書包含密鑰對、證書擁有者的信息、證書可用的開始和結(jié)束過期日期,同時還包含公鑰和密鑰,前者用來加密,后者用來解密。
3)SQL Server可以生成它自己的證書,也可以從外部文件或程序集載入。證書比非對稱密鑰更易于移植,可以在數(shù)據(jù)庫中很方便地重用。
2.2、創(chuàng)建證書
CREATE CERTIFICATE TestCert ENCRYPTION BY PASSWORD='HelloWorld' WITH SUBJECT='Hello World', START_DATE='2021-01-20', EXPIRY_DATE='2021-12-31'
2.3、加密函數(shù)
CREATE FUNCTION dbo.EncryptCert(@EnPass VARCHAR(32))
RETURNS VARBINARY(MAX)
AS
BEGIN
DECLARE @Result VARBINARY(MAX)
SET @Result=EncryptByCert(Cert_ID('TestCert'),@EnPass)
RETURN @Result
END
2.4、解密函數(shù)
CREATE FUNCTION dbo.DecryptCert(@DePass VARBINARY(MAX))
RETURNS VARCHAR(32)
AS
BEGIN
DECLARE @Result VARCHAR(32)
SET @Result=CONVERT(VARCHAR,DECRYPTBYCERT(Cert_ID('TestCert'),@DePass,N'HelloWorld'))
RETURN @Result
END
2.5、結(jié)果測試
SELECT dbo.EncryptCert('測試字符串') AS RESULT
SELECT dbo.DecryptCert(0x836021834D8D25E4DAD0CD26767A77A7FFF9CE9BDCA7BDE72E418118DB58DFB8AF6325B7A9D1D6C2D5D43800120A5C5D212BC4A645D10A065A147C5E97B419DAF6DC203598E376AE4A520B45D145F2C2A6BAE23B49AD3EA45BDAAC1FBD78E8402195DDA0842CA5A89942D03C5D7B82F7E8241D8BD698115C78CEBD5AC0066C6C) AS RESULT
SELECT dbo.DecryptCert(dbo.EncryptCert('測試字符串')) AS RESULT
2.6、執(zhí)行結(jié)果

到此這篇關(guān)于關(guān)于SQL Server加密與解密的問題的文章就介紹到這了,更多相關(guān)SQL Server加密與解密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MSSQL數(shù)據(jù)加密解密代碼
- SQL Server儲過程加密和解密原理深入分析
- 實例講解SQL Server加密功能
- MySQL加密和解密實例詳解
- MySQL數(shù)據(jù)庫對敏感數(shù)據(jù)加密及解密的實現(xiàn)方式
- MySQL InnoDB表空間加密示例詳解
- sqlserver數(shù)據(jù)庫加密后無法使用MDF,LDF,log文件名稱被修改的數(shù)據(jù)恢復(fù)
- MySQL中使用MD5加密的實現(xiàn)
- mysql如何對已經(jīng)加密的字段進(jìn)行模糊查詢詳解
- Sql Server數(shù)據(jù)庫實現(xiàn)表中字段的列加密
相關(guān)文章
Excel導(dǎo)入Sqlserver數(shù)據(jù)庫腳本
簡單但很實用的一段SQL腳本,相信大家在做新舊系統(tǒng)升級時會經(jīng)常用到.2009-10-10
SQLServer 批量插入數(shù)據(jù)的兩種方法
在SQL Server 中插入一條數(shù)據(jù)使用Insert語句,但是如果想要批量插入一堆數(shù)據(jù)的話,循環(huán)使用Insert不僅效率低,而且會導(dǎo)致SQL一系統(tǒng)性能問題。下面介紹SQL Server支持的兩種批量數(shù)據(jù)插入方法:Bulk和表值參數(shù)(Table-Valued Parameters)。2009-07-07
SqlServer參數(shù)化查詢之where in和like實現(xiàn)詳解
若有一天你不可避免的需要提高SQL的查詢性能,需要一次性where in 幾百、上千、甚至上萬條數(shù)據(jù)時,參數(shù)化查詢將是必然進(jìn)行的選擇2012-05-05
sqlserver數(shù)據(jù)庫大型應(yīng)用解決方案經(jīng)驗總結(jié)
對于一個大型的互聯(lián)網(wǎng)應(yīng)用,每天百萬級甚至上億的PV無疑對數(shù)據(jù)庫造成了相當(dāng)高的負(fù)載。對于系統(tǒng)的穩(wěn)定性和擴(kuò)展性造成了極大的問題2013-10-10
SQL Server2019數(shù)據(jù)庫備份與還原腳本(批量備份)
本文主要介紹了SQL Server2019數(shù)據(jù)庫備份與還原腳本,數(shù)據(jù)庫可批量備份,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11
數(shù)據(jù)庫日常練習(xí)題,每天進(jìn)步一點點(2)
下面小編就為大家?guī)硪黄獢?shù)據(jù)庫基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你2021-07-07

