Cette rubrique explique comment utiliser la fonction ENHANCED_SYM_DECRYPT pour déchiffrer des données à l'aide d'un ensemble de clés spécifié.
Contexte et prérequis
La fonction ENHANCED_SYM_DECRYPT de MaxCompute permet de déchiffrer des données à l'aide d'un ensemble de clés de base ou enveloppé. L'ensemble de clés utilisé pour le déchiffrement doit être identique à celui utilisé pour le chiffrement. Un ensemble de clés enveloppé est créé en chiffrant un ensemble de clés existant avec une clé Key Management Service (KMS). Les ensembles de clés enveloppés offrent une gestion des clés plus sécurisée que les ensembles de clés de base lorsqu'ils sont utilisés avec KMS.
Avant d'utiliser la fonction ENHANCED_SYM_DECRYPT, effectuez les opérations suivantes :
Générez un ensemble de clés de base ou enveloppé à l'aide des fonctions
NEW_KEYSETouNEW_WRAPPED_KEYSET. Pour plus d'informations, consultez les rubriques NEW_KEYSET et NEW_WRAPPED_KEYSET.Si vous utilisez un ensemble de clés enveloppé pour déchiffrer des données, vous devez disposer des autorisations associées au rôle lié à cet ensemble de clés. Pour plus d'informations, consultez la rubrique Activate KMS and complete configurations.
Syntaxe
BINARY ENHANCED_SYM_DECRYPT(BINARY <keyset> , BINARY <ciphertext> [,string <additional_data>])
Paramètres
-
keyset : Obligatoire. Ensemble de clés utilisateur, de type BINARY ou STRUCT.
ImportantL'ensemble de clés de base ou enveloppé utilisé pour le déchiffrement doit être identique à celui utilisé lors du chiffrement.
ciphertext : Obligatoire. Texte chiffré de type BINARY à déchiffrer. Ce texte chiffré doit avoir été chiffré avec l'ensemble de clés spécifié.
additional_data : Facultatif. Informations de vérification prises en charge par l'algorithme, de type STRING.
Valeur renvoyée
Renvoie le texte en clair de type BINARY.
Exemple de données
-- 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|
+------------+------+--------+------------+------------+
Exemples
-
Déchiffrez la colonne
id_card_node la tablemf_user_infoà l'aide d'un ensemble de clés simple :ImportantAvant de déchiffrer les données, assurez-vous qu'elles ont bien été chiffrées. L'ensemble de clés de base ou enveloppé utilisé pour le déchiffrement doit correspondre exactement à celui employé lors du chiffrement. Pour un exemple d'opération de chiffrement, consultez la rubrique 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;Le résultat suivant est renvoyé :
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| +------------+------+--------+------------+------------+ -
Utilisez un ensemble de clés enveloppé pour déchiffrer la colonne chiffrée
mf_user_infodans la tabletel: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;Le résultat suivant est renvoyé :
+------------+------+--------+------------+------+ | 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 | +------------+------+--------+------------+------+