全部产品
Search
文档中心

MaxCompute:ENHANCED_SYM_DECRYPT

更新时间:Dec 18, 2025

Topik ini menjelaskan cara menggunakan fungsi ENHANCED_SYM_DECRYPT untuk mendekripsi data dengan keyset yang ditentukan.

Latar Belakang dan Prasyarat

Anda dapat menggunakan fungsi ENHANCED_SYM_DECRYPT di MaxCompute untuk mendekripsi data dengan keyset dasar atau wrapped keyset yang ditentukan. Keyset yang digunakan untuk dekripsi harus sama dengan keyset yang digunakan saat enkripsi. Wrapped keyset dibuat dengan mengenkripsi keyset yang ada menggunakan kunci Key Management Service (KMS). Penggunaan wrapped keyset bersama KMS memungkinkan pengelolaan kunci yang lebih aman dibandingkan dengan keyset dasar.

Sebelum menggunakan fungsi ENHANCED_SYM_DECRYPT, lakukan langkah-langkah berikut:

  • Buat keyset dasar atau wrapped keyset menggunakan fungsi NEW_KEYSET atau NEW_WRAPPED_KEYSET. Untuk informasi selengkapnya, lihat NEW_KEYSET dan NEW_WRAPPED_KEYSET.

  • Jika Anda menggunakan wrapped keyset untuk mendekripsi data, pastikan Anda memiliki izin pada role yang terkait dengan wrapped keyset tersebut. Untuk informasi selengkapnya, lihat Aktifkan KMS dan selesaikan konfigurasi.

Sintaksis

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

Parameter

  • keyset: Wajib. Keyset pengguna, yang dapat bertipe BINARY atau STRUCT.

    Penting

    Keyset dasar atau wrapped keyset yang digunakan untuk dekripsi harus sama dengan keyset yang digunakan saat enkripsi.

  • ciphertext: Wajib. Ciphertext bertipe BINARY yang akan didekripsi. Ciphertext tersebut harus telah dienkripsi dengan keyset yang ditentukan.

  • additional_data: Opsional. Parameter ini menentukan informasi verifikasi yang didukung oleh algoritma. Informasi verifikasi bertipe STRING.

Nilai yang Dikembalikan

Mengembalikan teks biasa bertipe BINARY.

Data Contoh

-- Buat tabel.
create table mf_user_info(id bigint,
                          name string,
                          gender string,
                          id_card_no string,
                          tel string);
-- Masukkan data ke dalam tabel.
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");
-- Kueri data dari tabel.
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|
+------------+------+--------+------------+------------+

Contoh

  • Dekripsi kolom id_card_no pada tabel mf_user_info menggunakan keyset dasar:

    Penting

    Sebelum mendekripsi data, pastikan data tersebut telah dienkripsi. Keyset dasar atau wrapped keyset yang digunakan untuk dekripsi harus sama dengan keyset yang digunakan saat enkripsi. Untuk contoh operasi enkripsi, lihat ENHANCED_SYM_ENCRYPT.

    INSERT OVERWRITE TABLE mf_user_info 
    SELECT id,
           name,
           gender,
           CAST(ENHANCED_SYM_DECRYPT(unhex('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), UNBASE64(id_card_no)) AS STRING) AS id_card_no,
           tel
    FROM mf_user_info;

    Hasil berikut dikembalikan:

    SELECT * FROM mf_user_info;
    
    -- Hasil contoh
    +------------+------+--------+------------+------------+
    | 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|
    +------------+------+--------+------------+------------+
  • Gunakan set kunci terbungkus untuk mendekripsi kolom mf_user_info yang terenkripsi dalam tabel 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;

    Hasil berikut dikembalikan:

    +------------+------+--------+------------+------+
    | 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 |
    +------------+------+--------+------------+------+