1. 程式人生 > 資料庫 >關於SQL Server加密與解密的問題

關於SQL Server加密與解密的問題

一、PassPhrase加密

1.1、概要簡述

1)對於不涉及證書及金鑰的應急的資料加密,可以直接基於使用者提供的密碼來加密和解密資料。

2)通行短語(PassPhrase)是允許存在空格的密碼。這個PassPhrase不會儲存在資料庫中,因而也就意味著不會被使用儲存的系統資料"破解"。同時,可以使用空格建立一個長的、易於記憶的句子來加密和解密敏感資料。

3)PassPhrase支援的資料列型別有nvarchar、varchar、nchar、char、varbinary、binary。

1.2、加密函式

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、解密函式

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、結果測試

SELECT dbo.EncryptPass('測試字串') AS RESULT
SELECT dbo.DecryptPass(0x0100000045FE8873D07BFB747D33D81D1C1E06CA3EC10D718CF603E395D4493BFBFC5683) AS RESULT
SELECT dbo.DecryptPass(dbo.EncryptPass('測試字串')) AS RESULT

1.5、執行結果

關於SQL Server加密與解密的問題

二、證書加密

2.1、概要簡述

1)證書可以在資料庫中加密和解密資料。

2)證書包含金鑰對、證書擁有者的資訊、證書可用的開始和結束過期日期,同時還包含公鑰和金鑰,前者用來加密,後者用來解密。

3)SQL Server可以生成它自己的證書,也可以從外部檔案或程式集載入。證書比非對稱金鑰更易於移植,可以在資料庫中很方便地重用。

2.2、建立證書

CREATE CERTIFICATE TestCert
ENCRYPTION BY PASSWORD='HelloWorld'
WITH SUBJECT='Hello World',START_DATE='2021-01-20',EXPIRY_DATE='2021-12-31'

2.3、加密函式

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、解密函式

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、結果測試

SELECT dbo.EncryptCert('測試字串') AS RESULT
SELECT dbo.DecryptCert(0x836021834D8D25E4DAD0CD26767A77A7FFF9CE9BDCA7BDE72E418118DB58DFB8AF6325B7A9D1D6C2D5D43800120A5C5D212BC4A645D10A065A147C5E97B419DAF6DC203598E376AE4A520B45D145F2C2A6BAE23B49AD3EA45BDAAC1FBD78E8402195DDA0842CA5A89942D03C5D7B82F7E8241D8BD698115C78CEBD5AC0066C6C) AS RESULT
SELECT dbo.DecryptCert(dbo.EncryptCert('測試字串')) AS RESULT

2.6、執行結果

關於SQL Server加密與解密的問題

到此這篇關於關於SQL Server加密與解密的問題的文章就介紹到這了,更多相關SQL Server加密與解密內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!