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