Todos os produtos
Search
Central de documentação

MaxCompute:ENHANCED_SYM_DECRYPT

Última atualização: Sep 08, 2026

Este tópico descreve como usar a função ENHANCED_SYM_DECRYPT para descriptografar dados com um keyset especificado.

Contexto e pré-requisitos

No MaxCompute, a função ENHANCED_SYM_DECRYPT descriptografa dados com um keyset básico ou encapsulado. O keyset de descriptografia deve ser idêntico ao da criptografia. Um keyset encapsulado resulta da criptografia de um keyset existente com uma chave do Key Management Service (KMS). Keysets encapsulados com KMS oferecem gerenciamento de chaves mais seguro que keysets básicos.

Antes de usar a função ENHANCED_SYM_DECRYPT, conclua as seguintes etapas:

  • Gere um keyset básico ou encapsulado com a função NEW_KEYSET ou NEW_WRAPPED_KEYSET. Para mais informações, consulte NEW_KEYSET e NEW_WRAPPED_KEYSET.

  • Se usar um keyset encapsulado para descriptografar dados, você precisará das permissões da função associada a esse keyset. Para mais detalhes, consulte Activate KMS and complete configurations.

Sintaxe

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

Parâmetros

  • keyset: Obrigatório. Keyset do usuário, que pode ser do tipo BINARY ou STRUCT.

    Importante

    O keyset básico ou encapsulado usado na descriptografia deve ser idêntico ao da criptografia.

  • ciphertext: Obrigatório. Texto cifrado do tipo BINARY a descriptografar. O texto cifrado deve ter sido criptografado com o keyset especificado.

  • additional_data: Opcional. Especifica as informações de verificação compatíveis com o algoritmo. As informações de verificação são do tipo STRING.

Valor de retorno

Retorna texto simples do tipo BINARY.

Dados de exemplo

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

Exemplos

  • Descriptografe a coluna id_card_no da tabela mf_user_info com um keyset simples:

    Importante

    Antes de descriptografar os dados, verifique se eles foram criptografados. O keyset básico ou encapsulado usado na descriptografia deve ser idêntico ao da criptografia. Para ver um exemplo de operação de criptografia, consulte 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;

    Resultado retornado:

    SELECT * FROM mf_user_info;
    
    -- Sample result
    +------------+------+--------+------------+------------+
    | 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|
    +------------+------+--------+------------+------------+
  • Use um keyset encapsulado para descriptografar a coluna criptografada mf_user_info da tabela 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;

    Resultado retornado:

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