すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:ENHANCED_SYM_DECRYPT

最終更新日:Jan 17, 2025

このトピックでは、ENHANCED_SYM_DECRYPT関数を使用して、指定されたキーセットを使用してデータを復号する方法について説明します。

背景情報と前提条件

MaxComputeでは、ENHANCED_SYM_DECRYPT関数を使用して、指定された基本キーセットまたはラップされたキーセットを使用してデータを復号できます。 データの復号化に使用される基本キーセットまたはラップされたキーセットは、データの暗号化に使用されるものと同じでなければなりません。 キー管理サービス (KMS) キーに基づいて既存のキーセットを暗号化することにより、ラップされたキーセットを作成できます。 基本キーセットと比較して、KMSでラップされたキーセットを使用して、より安全な方法でキーを管理できます。

ENHANCED_SYM_DECRYPT関数を使用する前に、次の前提条件が満たされていることを確認してください。

  • 基本キーセットまたはラップされたキーセットは、NEW_keysetまたはNEW_WRAPPED_keyset関数を使用して生成されます。 詳細については、「NEW_KEYSET」または「NEW_WRAPPED_KEYSET」をご参照ください。

  • ラップされたキーセットを使用する権限を持つロールがアカウントに割り当てられます。 ラップされたキーセットを使用してデータを復号化する場合は、この前提条件を満たす必要があります。

構文

binary ENHANCED_SYM_DECRYPT(binary <keyset> , binary <ciphertext> [,string <additional_data>])

Parameters

  • keyset: 必須です。 このパラメーターには、BINARY型の基本キーセットまたはSTRUCT型のラップキーセットを指定します。

    重要

    データの復号化に使用される基本キーセットまたはラップされたキーセットは、データの暗号化に使用されるものと同じでなければなりません。

  • ciphertext: 必須です。 このパラメーターは、指定されたキーセットを使用して暗号化されるBINARY型の暗号文を指定します。

  • additional_data: オプション。 このパラメータは、アルゴリズムによってサポートされる検証情報を指定する。 検証情報はSTRINGタイプである。

戻り値

BINARY型の平文が返されます。

サンプルデータ

-- Create a table.
create table mf_user_info(id bigint,
                          name string,
                          gender string,
                          id_card_no string,
                          tel string);
-- Insert data into the table.
insert overwrite table mf_user_info values(1,"bob","male","0001","13900001234"),
                                       (2,"allen","male","0011","13900001111"),
                                     (3,"kate","female","0111","13900002222"),
                                     (4,"annie","female","1111","13900003333");
-- Query data from the table.
select * from mf_user_info;
+------------+------+--------+------------+------------+
| id         | name | gender | id_card_no |    tel     |
+------------+------+--------+------------+------------+
| 1          | bob  | male   | 0001       | 13900001234|
| 2          | allen| male   | 0011       | 13900001111|
| 3          | kate | female | 0111       | 13900002222|
| 4          | annie| female | 1111       | 13900003333|
+------------+------+--------+------------+------------+

  • 基本キーセットを使用して、mf_user_infoテーブルの暗号化されたid_card_no列を復号します。

    重要

    データを復号する前に、データが暗号化されていること、およびデータの復号に使用される基本キーセットまたはラップされたキーセットがデータの暗号化に使用されるものと同じであることを確認する必要があります。 暗号化操作の例の詳細については、「ENHANCED_SYM_ENCRYPT」をご参照ください。

    insert overwrite table mf_user_info 
    select id,
        name,
        gender,
           ENHANCED_SYM_DECRYPT(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), unbase64(id_card_no) )as id_card_no,
          tel
    from mf_user_info;

    次のサンプルステートメントは、復号結果を照会します。

    select * from mf_user_info;
    
    -- The following result is returned:
    +------------+------+--------+------------+------------+
    | id         | name | gender | id_card_no |    tel     |
    +------------+------+--------+------------+------------+
    | 1          | bob  | male   | 0001       | 13900001234|
    | 2          | allen| male   | 0011       | 13900001111|
    | 3          | kate | female | 0111       | 13900002222|
    | 4          | annie| female | 1111       | 13900003333|
    +------------+------+--------+------------+------------+
  • ラップされたキーセットを使用して、mf_user_infoテーブルの暗号化されたtel列を復号します。

     select /*+ MAPJOIN(a) */ 
           id,
           name,
    	   gender,
    	   id_card_no, 
           ENHANCED_SYM_DECRYPT (
             USE_WRAPPED_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t', 
                                  'acs:ram::1**************7:role/kms', 
                                  unhex('613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78447654524C4632635077766E74554654584579715242583953724167446D2F397131786F57456E6F5474516739633853766242674456773565736674714A4D5435524455382F6F6A2B4E61766D774344494C734B6A416B6B675A42496F5568656F566D38564C4F30506D4778767137646956517453447A5467395147775639533161305A464A6D6A45562B6742722F56386653444D6E424D2B71493779784668303866594E6D336578775744423949726B645A3469784F2B532B476E6750523854524A58326E5768666478347034473468687248684A514D615071332F526C342B67427652773D3D')
                                 ),
           	 ENHANCED_SYM_ENCRYPT(
               USE_WRAPPED_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t', 
                                  'acs:ram::1**************7:role/kms', 
                                  unhex('613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78447654524C4632635077766E74554654584579715242583953724167446D2F397131786F57456E6F5474516739633853766242674456773565736674714A4D5435524455382F6F6A2B4E61766D774344494C734B6A416B6B675A42496F5568656F566D38564C4F30506D4778767137646956517453447A5467395147775639533161305A464A6D6A45562B6742722F56386653444D6E424D2B71493779784668303866594E6D336578775744423949726B645A3469784F2B532B476E6750523854524A58326E5768666478347034473468687248684A514D615071332F526C342B67427652773D3D')
                                 ),
               tel
           ),
           ''
          )
           as tel 
     FROM mf_user_info;

    次の応答が返されます。

    +------------+------+--------+------------+------+
    | id         | name | gender | id_card_no | tel  |
    +------------+------+--------+------------+------+
    | 1          | bob  | male   | 0001       | 13900001234 |
    | 2          | allen | male   | 0011       | 13900001111 |
    | 3          | kate | female | 0111       | 13900002222 |
    | 4          | annie | female | 1111       | 13900003333 |
    +------------+------+--------+------------+------+