Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
|
mysql_aes [2024/02/01 23:25] enric_mieza_sanchez [Exemple bàsic] |
mysql_aes [2024/02/02 17:47] (actual) enric_mieza_sanchez [Exemple: encriptació per a vot secret] |
||
|---|---|---|---|
| Línia 1: | Línia 1: | ||
| ====== Encriptació AES a MySQL ====== | ====== Encriptació AES a MySQL ====== | ||
| - | L' | + | L' |
| + | |||
| + | En AES es fa servir la mateixa clau per encriptar i desencriptar, | ||
| + | |||
| + | {{ https:// | ||
| Referències: | Referències: | ||
| Línia 12: | Línia 16: | ||
| ===== Exemple bàsic ===== | ===== Exemple bàsic ===== | ||
| - | L' | + | L' |
| + | <WRAP important> | ||
| + | ULL! El '' | ||
| + | </ | ||
| <WRAP prewrap> | <WRAP prewrap> | ||
| Línia 39: | Línia 46: | ||
| \\ | \\ | ||
| - | ===== Exemple: encriptació | + | ===== Exemple: encriptació |
| + | En aquest exemple volem **encriptar el vot en una aplicació de votacions per tal de que sigui secret**. Això significa que ningú que no sigui l' | ||
| + | |||
| + | {{db_vota.png}} | ||
| + | |||
| + | Tenim invitacions a l' | ||
| + | |||
| + | L' | ||
| + | |||
| + | ID_INVITACIO_ENC = SHA2( ID_INVITACIO + SAL_USUARI ) | ||
| + | |||
| + | ==== Creació de la BD de votacions ==== | ||
| <WRAP prewrap> | <WRAP prewrap> | ||
| <code mysql> | <code mysql> | ||
| - | drop database if exists vota; | ||
| create database vota; | create database vota; | ||
| use vota; | use vota; | ||
| Línia 82: | Línia 99: | ||
| -- votació: insertem la id_invitacio_enc i la id_opcio | -- votació: insertem la id_invitacio_enc i la id_opcio | ||
| - | -- s' | + | -- s' |
| - | -- " | + | -- per ex: id_invitacio+sal => " |
| insert into vots values (SHA2(CONCAT(CONVERT(10, | insert into vots values (SHA2(CONCAT(CONVERT(10, | ||
| insert into vots values (SHA2(CONCAT(CONVERT(20, | insert into vots values (SHA2(CONCAT(CONVERT(20, | ||
| Línia 89: | Línia 106: | ||
| </ | </ | ||
| + | Les dades quedarien així: | ||
| + | < | ||
| + | mysql> select * from usuaris; | ||
| + | +----+--------+-----------------+--------------+---------------------+ | ||
| + | | id | nom | email | contrasenya | ||
| + | +----+--------+-----------------+--------------+---------------------+ | ||
| + | | 1 | pepa | [email protected] | ||
| + | | 2 | manolo | [email protected] | b1d731d8... | ||
| + | +----+--------+-----------------+--------------+---------------------+ | ||
| + | mysql> select * from invitacions; | ||
| + | +------+-----------+-------------+ | ||
| + | | id | id_usuari | id_enquesta | | ||
| + | +------+-----------+-------------+ | ||
| + | | 10 | 1 | 11 | | ||
| + | | 20 | 2 | 22 | | ||
| + | +------+-----------+-------------+ | ||
| + | |||
| + | mysql> select * from vots; | ||
| + | +------------------------------+----------+ | ||
| + | | id_invitacio_enc | ||
| + | +------------------------------+----------+ | ||
| + | | 0x613835326530353... | ||
| + | | 0x653837363036323... | ||
| + | +------------------------------+----------+ | ||
| + | |||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | |||
| + | ==== Accedir als vots d'un usuari ==== | ||
| + | |||
| + | Podem accedir a les opcions votades per un usuari només si disposem de la seva contrasenya, | ||
| + | |||
| + | Així, l' | ||
| + | |||
| + | <code mysql> | ||
| + | SET block_encryption_mode = ' | ||
| + | |||
| + | -- exemple de query per cercar les votacions | ||
| + | set @id_usuari = 2; | ||
| + | set @pass_usuari = " | ||
| + | |||
| + | -- l' | ||
| + | set @sal = (select cast(aes_decrypt(enc_salt, | ||
| + | from usuaris where id=@id_usuari); | ||
| + | |||
| + | -- cerquem totes les votacions de l' | ||
| + | select i.id_usuari , i.id_enquesta, | ||
| + | from vots v, invitacions i | ||
| + | where i.id_usuari = @id_usuari | ||
| + | and v.id_invitacio_enc = SHA2(CONCAT(CONVERT(i.id, | ||
| + | </ | ||
| + | |||
| + | Amb el què obtindrem, en cas de que l' | ||
| + | |||
| + | < | ||
| + | +-----------+-------------+----------+ | ||
| + | | id_usuari | id_enquesta | id_opcio | | ||
| + | +-----------+-------------+----------+ | ||
| + | | 2 | 22 | 222 | | ||
| + | +-----------+-------------+----------+ | ||
| + | </ | ||