カテゴリ:

暗号化機能

TRY_DECRYPT_RAW

復号化中にエラーが発生した場合に NULL 値を返す DECRYPT_RAW の特別なバージョンです。

こちらもご参照ください。

ENCRYPTENCRYPT_RAWDECRYPTTRY_DECRYPTDECRYPT_RAW

構文

TRY_DECRYPT_RAW( <value_to_decrypt> , <key> , <iv> ,
         [ [ [ <additional_authenticated_data> , ] <encryption_method> , ] <aead_tag> ]
       )
Copy

引数

必須:

value_to_decrypt

復号化するバイナリ値。

key

データの暗号化/復号化に使用するキー。キーは BINARY 値である必要があります。キーは、長さが正しい限り、任意の値にすることができます。たとえば、 AES128 の場合、キーは128ビット(16バイト)である必要があり、 AES256 の場合、キーは256ビット(32バイト)である必要があります。

値の暗号化に使用されたキーは、値の復号化に使用する必要があります。

iv

このパラメーターには、このデータを暗号化および復号化するために使用する初期化ベクトル(IV)が含まれています。IV は特定の長さの BINARY 値である必要があります。

  • GCM の場合、このフィールドは96ビット(12バイト)である必要があります。GCM 暗号化メソッドでは、このフィールドのサイズを変えることができますが、Snowflakeは現在96ビットのみをサポートしています。

  • CCM の場合は、56ビット(7バイト)である必要があります。

  • ECB の場合、このパラメーターは不要です。

  • サポートされている他のすべての暗号化モードでは、128ビット(16バイト)である必要があります。

この値は、最初の暗号化ラウンドを初期化するために使用されます。特に GCM のような暗号化モードでは、同じ IV とキーの組み合わせを2回以上使用しないでください。

このパラメーターが NULL に設定されている場合、実装は各呼び出し中に新しい疑似ランダム IV を選択します。

オプション:

additional_authenticated_data

認証済み追加データ(AAD)は、暗号化解除プロセス中に機密性と信頼性が保証される追加データです。ただし、この AAD は暗号化されておらず、 ENCRYPT または ENCRYPT_RAW 関数からの戻り値のフィールドとして含まれていません。

AAD が暗号化関数(ENCRYPT または ENCRYPT_RAW)に渡される場合は、同じ AAD が復号化関数(DECRYPT または DECRYPT_RAW)に渡される必要があります。復号化関数に渡された AAD が暗号化関数に渡された AAD と一致しない場合は、復号化に失敗します。

AAD と passphrase の違いは、パスフレーズは秘密にしておくことを意図している(そうでない場合、暗号化は本質的に価値がない)のに対し、 AAD は公開したままにすることができます。AAD は、公開されている情報と暗号化された値が相互に関連付けられていることを認証するのに役立ちます。 ENCRYPT 関数の例のセクションには、 AAD が一致するときの動作と一致しないときの動作を示す例が含まれています。

ENCRYPT_RAW および DECRYPT_RAW の場合、 AAD のデータ型は BINARY である必要があります。ENCRYPT および DECRYPT の場合、 AAD のデータ型は VARCHAR または BINARY のいずれかであり、暗号化された値のデータ型と一致する必要はありません。

AAD GCM (デフォルト)などの AEAD 対応の暗号化モードでのみサポートされます。

encryption_method

この文字列は、データの暗号化/復号化に使用する方法を指定します。この文字列にはサブフィールドが含まれています。

<algorithm>-<mode> [ /pad: <padding> ]
Copy

algorithm には現在、次の制限があります。

  • 'AES' :パスフレーズが渡されると(例: ENCRYPT に対して)、関数は AES-256暗号化(256ビット)を使用します。キーが渡されると(例: ENCRYPT_RAW に対して)、関数はキーの長さに応じて、128、192、または256ビットの暗号化を使用します。

algorithm では、大文字と小文字が区別されません。

mode は、メッセージの暗号化に使用するブロック暗号モードを指定します。次のテーブルは、サポートされているモードと、パディングをサポートしているモードを示しています。

モード

パディング

説明

'ECB'

はい

キーを使用して、すべてのブロックを個別に暗号化します。このモードは一般的に推奨されておらず、外部実装との互換性のためにのみ含まれています。

'CBC'

はい

暗号化されたブロックは、前のブロックと XORed です。

'GCM'

不可

Galois/Counterモードは、 AEAD 対応の高性能暗号化モードです。AEAD はさらに、 AEAD タグを生成することにより、暗号化されたデータの信頼性と機密性を保証します。さらに、 AEAD は AAD (認証済み追加データ)をサポートします。

'CTR'

不可

カウンターモード。

'OFB'

不可

出力フィードバック。暗号文は、ブロックの平文を含む XORed です。

'CFB'

不可

暗号フィードバックは、 OFB と CBC の組み合わせです。

mode では、大文字と小文字が区別されません。

padding は、長さがブロックサイズの倍数ではないメッセージを埋め込む方法を指定します。パディングは ECB および CBC モードにのみ適用されます。他のモードでは、パディングは無視されます。パディングの可能な値は次のとおりです。

  • 'PKCS' :ブロックのパディングに PKCS5 を使用します。

  • 'NONE' :パディングなし。ECB または CBC モードを使用する場合、ユーザーはパディングに注意する必要があります。

padding では、大文字と小文字が区別されません。

デフォルト設定: 'AES-GCM'

mode が指定されていない場合は、 GCM が使用されます。

padding が指定されていない場合は、 PKCS が使用されます。

aead_tag

この BINARY 値は、暗号化されたデータの信頼性と機密性を確認するために AEAD 対応の復号化モードで必要です。ENCRYPT_RAW 関数によって返された AEAD タグを使用します。以下の例は、この値にアクセスして使用する方法を示しています。

戻り値

この関数は、復号化された値を返します。復号化中に実行時エラーが発生した場合は NULL 値を返します。戻り値のデータ型は BINARY です。

使用上の注意および例

使用上の注意および例については、 DECRYPT_RAW 関数をご参照ください。