DECRYPTBYPASSPHRASE (Transact-SQL)

对使用通行短语加密的数据进行解密。

主题链接图标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
    包含用于派生验证器的数据的变量。

返回类型

最大大小为 8,000 个字节的 varbinary。

注释

执行该函数无需任何权限。

如果使用了错误的通行短语或验证器信息,则返回 NULL。

该通行短语用于生成一个解密密钥,该密钥不会持久化。

如果对加密文本进行解密时包括验证器,则必须在解密时提供该验证器。如果解密时提供的验证器值与使用数据加密的验证器值不匹配,则解密将失败。

示例

以下示例对在 EncryptByPassPhrase 的中更新的记录进行解密。

USE AdventureWorks2008R2;
-- 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