DECRYPTBYPASSPHRASE (Transact-SQL)
將以密碼片語加密的資料解密。
語法
DecryptByPassPhrase ( { 'passphrase' | @passphrase }
, { 'ciphertext' | @ciphertext }
[ , { add_authenticator | @add_authenticator }
, { authenticator | @authenticator } ] )
引數
passphrase
這是要用來產生解密金鑰的複雜密碼。@passphrase
這是 nvarchar、char、varchar 或 nchar 類型的變數,其中包含用來產生解密金鑰的複雜密碼。'ciphertext'
這是要解密的加密文字。@ciphertext
這是包含加密文字之 varbinary 類型的變數。 大小上限是 8,000 位元組。add_authenticator
指出驗證器是否要與純文字一起加密。 如果使用驗證器,則為 1。 int.@add\_authenticator
指出驗證器是否要與純文字一起加密。 如果使用驗證器,則為 1。 int.authenticator
這是驗證器資料。 sysname.@authenticator
這是含有要衍生驗證器之資料的變數。
傳回類型
varbinary,大小上限為 8,000 位元組。
備註
執行這個函數不需要任何權限。
如果使用錯誤的複雜密碼或驗證器資訊,則傳回 NULL。
複雜密碼是用來產生解密金鑰,它不會保存下來。
如果對加密文字進行加密時包含了驗證器,則解密時必須提供驗證器。 如果在解密時提供的驗證器值不符合與資料一起加密的驗證器值,則解密會失敗。
範例
下列範例會將 EncryptByPassPhrase 中更新的記錄解密。
USE AdventureWorks2012;
-- Get the pass phrase 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(nvarchar,
DecryptByPassphrase(@PassphraseEnteredByUser, CardNumber_EncryptedbyPassphrase, 1
, CONVERT(varbinary, CreditCardID)))
AS 'Decrypted card number' FROM Sales.CreditCard
WHERE CreditCardID = '3681';
GO
請參閱
參考
ENCRYPTBYPASSPHRASE (Transact-SQL)