DECRYPTBYPASSPHRASE (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
此函式會將原本以複雜密碼加密的資料解密。
語法
DecryptByPassPhrase ( { 'passphrase' | @passphrase }
, { 'ciphertext' | @ciphertext }
[ , { add_authenticator | @add_authenticator }
, { authenticator | @authenticator } ] )
引數
passphrase
用來產生解密金鑰的複雜密碼。
@passphrase
char、nchar、nvarchar 或 varchar 類型的變數,包含用來產生解密金鑰的複雜密碼。
'ciphertext'
以金鑰加密的資料字串。 ciphertext 具有 varbinary 資料類型。
@ciphertext
varbinary 類型的變數,其中包含以金鑰加密的資料。 @ciphertext 變數的大小上限為 8,000 個位元組。
add_authenticator
指出原始加密程序是否隨純文字一同包含及加密驗證器。 如果加密程序使用驗證器,則 add_authenticator 的值為 1。 add_authenticator 具有 int 資料類型。
@add_authenticator
指出原始加密程序是否隨純文字一同包含及加密驗證器的變數。 如果加密處理序使用驗證器,則 @add_authenticator 的值為 1。 @add_authenticator 具有 int 資料類型。
authenticator
作為驗證器產生基礎使用的資料。 authenticator 具有 sysname 資料類型。
@authenticator
變數,其中包含作為驗證器產生基礎使用的資料。 @authenticator 具有 sysname 資料類型。
傳回型別
varbinary,大小上限為 8,000 個位元組。
備註
執行 DECRYPTBYPASSPHRASE
不需要任何權限。 如果收到錯誤的複雜密碼或錯誤的驗證器資訊,則 DECRYPTBYPASSPHRASE
會傳回 NULL。
DECRYPTBYPASSPHRASE
使用複雜密碼來產生解密金鑰。 此解密金鑰不會保存。
如果對加密文字進行加密時包含了驗證器,DECRYPTBYPASSPHRASE
必須收到該相同的驗證器以用於解密程序。 如果提供給解密程序的驗證器值不符合原本用來加密的驗證器值,DECRYPTBYPASSPHRASE
作業會失敗。
範例
此範例會將 EncryptByPassPhrase 中更新的記錄解密。
USE AdventureWorks2022;
-- Get the passphrase from the user.
DECLARE @PassphraseEnteredByUser NVARCHAR(128);
SET @PassphraseEnteredByUser
= 'A little learning is a dangerous thing!';
-- Decrypt the encrypted record.
SELECT CardNumber, CardNumber_EncryptedbyPassphrase
AS 'Encrypted card number', CONVERT(varchar,
DecryptByPassphrase(@PassphraseEnteredByUser, CardNumber_EncryptedbyPassphrase, 1
, CONVERT(varbinary, CreditCardID)))
AS 'Decrypted card number' FROM Sales.CreditCard
WHERE CreditCardID = '3681';
GO