分享方式:


ENCRYPTBYPASSPHRASE (Transact-SQL)

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體

使用 TRIPLE DES 演算法搭配 128 金鑰位元長度,以複雜密碼加密資料。

注意

SQL Server 2017 和更新版本會使用 AES256 金鑰以複雜密碼來加密資料。

Transact-SQL 語法慣例

語法

EncryptByPassPhrase ( { 'passphrase' | @passphrase }   
    , { 'cleartext' | @cleartext }  
  [ , { add_authenticator | @add_authenticator }  
    , { authenticator | @authenticator } ] )  

引數

passphrase
用於產生對稱金鑰的複雜密碼。

@passphrase
類型為 nvarcharcharvarcharbinaryvarbinary,或 nchar 的變數,其中包含要用於產生對稱金鑰的複雜密碼。

cleartext
要加密的純文字。

@cleartext
類型為 nvarcharcharvarcharbinaryvarbinary,或 nchar,包含純文字的變數。 大小上限是 8,000 位元組。

add_authenticator
指出驗證器是否要與純文字一起加密。 若要加入驗證器,則為 1。 int.

@add_authenticator
指出雜湊是否要與純文字一起加密。

authenticator
要衍生驗證器的資料。 sysname.

@authenticator
含有要衍生驗證器之資料的變數。

傳回型別

varbinary,大小上限為 8,000 位元組。

備註

複雜密碼是指包含空格的密碼。 使用複雜密碼的好處是,記住有意義的片語或句子比記住相較之下冗長的字元字串容易得多。

這個函數不會檢查密碼複雜性。

範例

下列範例會更新 SalesCreditCard 資料表中的記錄,並使用主索引鍵當做驗證器,加密儲存在資料行 CardNumber_EncryptedbyPassphrase 中的信用卡號碼之值。

USE AdventureWorks2022;  
GO  
-- Create a column in which to store the encrypted data.  
ALTER TABLE Sales.CreditCard   
    ADD CardNumber_EncryptedbyPassphrase VARBINARY(256);   
GO  
-- First get the passphrase from the user.  
DECLARE @PassphraseEnteredByUser NVARCHAR(128);  
SET @PassphraseEnteredByUser   
    = 'A little learning is a dangerous thing!';  
  
-- Update the record for the user's credit card.  
-- In this case, the record is number 3681.  
UPDATE Sales.CreditCard  
SET CardNumber_EncryptedbyPassphrase = EncryptByPassPhrase(@PassphraseEnteredByUser  
    , CardNumber, 1, CONVERT(varbinary, CreditCardID))  
WHERE CreditCardID = '3681';  
GO  

另請參閱

DECRYPTBYPASSPHRASE (Transact-SQL)
加密階層