bonjour,
j'ai plusieurs table sql
ces tables contiennent des donnees confidentielles
je voudrai les crypter
comment faire???
bonjour,
j'ai plusieurs table sql
ces tables contiennent des donnees confidentielles
je voudrai les crypter
comment faire???
Fonctions de cryptage/décryptage:
http://dev.mysql.com/doc/refman/5.1/...functions.html
Qu'est-ce que tu cherches à faire exactement?
"On en a vu poser les armes avant de se tirer une balle dans le pied..."
-- pydévelop
Derniers articles:
(SQL Server) Introduction à la gestion des droits
(UML) Souplesse et modularité grâce aux Design Patterns
(UML) Le Pattern Etat
Autres articles...
je veux créer des tables sql à partir d'un fichier .txt
et je veux que le contenu de cette table soit crypter
Ce qui m'intéressais, c'était de savoir comment tu connais la clef de cryptage ainsi que les raisons du cryptage (ex: être en règle vis-à-vis de la CNIL).
Par exemple, si tu as des utilisateurs qui ont leur compte protégé par un mot de passe, il ne faut pas que le mdp apparaisse en clair dans la BDD, donc on le "crypte" avec une fonction non réversible (telle que MD5 ou SHA1). Ensuite c'est ce mot de passe crypté que l'on stocke dans la BDD, sous forme de VARCHAR (pour ne pas perdre de caractères, sinon on ne peut plus se logger) : INSERT INTO user(login, mdp_md5) VALUES($login, MD5($mdp) ).
Après, on décrypte à partir du mdp utilisateur:
Par contre, si l'utilisateur perd son mot de passe, il devient difficile voire impossible de récupérer les données cryptées (selon l'algo et la config utilisée, voir manuel). De plus, si l'utilisateur change de mdp, il faudra réencrypter les données avec le nouveau mdp.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT IF( MD5($mdp)=user.mdp_md5, DECODE(table.champ_crypte, $mdp), NULL ) ...
Maintenant, revenons à ton problème (crypter à partir d'un fichier texte):
Pour insérer le contenu d'un fichier texte dans une table, on utilise la fonction LOAD DATA INFILE (http://dev.mysql.com/doc/refman/5.1/en/load-data.html), cependant, il n'est pas possible d'appliquer une fonction (telle que ENCODE, ENCRYPT, AES_ENCRYPT...) sur les divers champs lus. Il faut donc faire plusieurs opérations:
1) Dans une table temporaire, faire un LOAD DATA INFILE en précisant les paramètres qui nous intéressent (notamment le séparateur).
2) Insérer dans ta table le contenu dans ta table temporaire, après cryptage des données:
ou:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 INSERT INTO matable(champ1, ...) SELECT ENCODE(champ1, "clef"), ... FROM tableTemporaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 INSERT INTO matable(mdp_md5, champ1, ...) SELECT MD5(mdp), ENCODE(champ1, mdp), ... FROM tableTemporaire
3) Vider la table temporaire (TRUNCATE) car elle contient les données en clair, ou la détruire complètement
Maintenant, on en revient à la question de départ: où se trouve la clef de cryptage/décriptage? (mot de passe utilisateur ou la même partout?)
Ai-je été clair?
"On en a vu poser les armes avant de se tirer une balle dans le pied..."
-- pydévelop
Derniers articles:
(SQL Server) Introduction à la gestion des droits
(UML) Souplesse et modularité grâce aux Design Patterns
(UML) Le Pattern Etat
Autres articles...
Partager