ENCRYPTBYPASSPHRASE (Transact-SQL)
キーの長さが 128 ビットの TRIPLE DES アルゴリズムを使用して、パスフレーズでデータを暗号化します。
構文
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 AdventureWorks2008R2;
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