ENCRYPTBYPASSPHRASE (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

128 キービット長の TRIPLE DES アルゴリズムを使用して、パスフレーズでデータを暗号化します。

注意

SQL Server 2017 以降のバージョンでは、AES256 キーを使用してパスフレーズでデータが暗号化されます。

Transact-SQL 構文表記規則

構文

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

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

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)
暗号化階層