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_KEYSETouNEW_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.
ImportanteO 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_noda tabelamf_user_infocom um keyset simples:ImportanteAntes 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_infoda tabelatel: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 | +------------+------+--------+------------+------+