ENCRYPTBYPASSPHRASE (Transact-SQL)
使用 TRIPLE DES 演算法搭配 128 金鑰位元長度,以複雜密碼加密資料。
語法
EncryptByPassPhrase ( { 'passphrase' | @passphrase }
, { 'cleartext' | @cleartext }
[ , { add_authenticator | @add_authenticator }
, { authenticator | @authenticator } ] )
引數
passphrase
用於產生對稱金鑰的複雜密碼。@passphrase
nvarchar、char、varchar、binary、varbinary 或 nchar 類型的變數,包含要用於產生對稱金鑰的複雜密碼。cleartext
要加密的純文字。@cleartext
nvarchar、char、varchar、binary、varbinary 或 nchar 類型的變數,包含純文字。 大小上限是 8,000 位元組。add_authenticator
指出驗證器是否要與純文字一起加密。 若要加入驗證器,則為 1。 int.@add\_authenticator
指出雜湊是否要與純文字一起加密。authenticator
要衍生驗證器的資料。 sysname.@authenticator
含有要衍生驗證器之資料的變數。
傳回類型
varbinary,大小上限為 8,000 位元組。
備註
複雜密碼是指包含空格的密碼。 使用複雜密碼的好處是,記住有意義的片語或句子比記住相較之下冗長的字元字串容易得多。
這個函數不會檢查密碼複雜性。
範例
下列範例會更新 SalesCreditCard 資料表中的記錄,並使用主索引鍵當做驗證器,加密儲存在資料行 CardNumber_EncryptedbyPassphrase 中的信用卡號碼之值。
USE AdventureWorks2012;
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)