Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1402 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Crypter un champ en MD5 dans une base de donnée SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Crypter un champ en MD5 dans une base de donnée SQL

n°1636830
Evanok
Posté le 05-11-2007 à 14:25:10  profilanswer
 

Bonjour a tous,
 
Je dois pour un petit programme comparer des mots de passe pour un accès. Sous java j'ai crypter les mdp donné par l'utilisateur en MD5, et il me faut donc maintenant convertir mes mots de passes dans ma base de donnée SQL en MD5.
 
J'ai fais quelques recherches j'ai essayé avec un trigger :

Citation :

CREATE OR REPLACE TRIGGER MajMd5
before
INSERT on identifiant
for each row
   BEGIN
 UPDATE identifiant set password = md5(password);
   END;
/
SHOW ERRORS;


 
 
mais ça ne fonctionne pas, les syntaxes que j'ai trouvé sur le net tel que :
 

Citation :

select md5('abc');


 
qui est censé renvoyé la chaine abc crypter en md5 ne fonctionne pas. Donc si quelqu'un aurai la solution ça serai formidable ;).
 
Merci d'avance Eva.


Message édité par Evanok le 05-11-2007 à 14:26:56
mood
Publicité
Posté le 05-11-2007 à 14:25:10  profilanswer
 

n°1637207
moi23372
Posté le 05-11-2007 à 20:55:59  profilanswer
 

j'imagine que tu es sous ORACLE.
Attention que ces package de crypto sous oracle ne sont que dispo à partir de la version 10g.  
Sinon, tu as la possibilité d'intégrer des procédures stockées écrite en JAVA dans oracle pour faire la cryptographie.  
Moi personnellement, j'ai adopté cette solution.

n°1637300
Evanok
Posté le 06-11-2007 à 07:38:18  profilanswer
 

En faites on m'avait conseillé de rentré les n u plet a l'aide d'un programme Java au lieu de faire un fichier sql. Etant donné que j'ai deja une classe écrite qui transforme une chaine de caractère en md5, je pourrai très bien passer les requêtes pour remplir ma table par java. Je te l'accorde c'est simple comme ça, mais ça fait un peu bricolage héhé, c'est pas la solution la plus logique.  
 
Je vais le faire en java alors tans pis, et parallelement je vais essayer de chercher les pack dont tu m'as parlé. Merci pour la réponse ;)
 
Eva.
 

n°1637437
startide
Posté le 06-11-2007 à 10:53:59  profilanswer
 

tes mots de passe sont stockés en clair dans ta base sql actuellement ? et tu voudrais les convertir pour assainir le truc ? Je dois donc comprendre qu'à l'avenir tu vas mettre les password au bon format c'est ca ?
 
La solution sale c'est de faire un SELECT id, password from table, et d'afficher ca dans un fichier texte genre :
 
UPDATE table set password = md5($password) where id = $id
 
ok c'est crade, mais ca marche :D

n°1637794
Evanok
Posté le 06-11-2007 à 18:09:08  profilanswer
 

Et bien surtout avec cette solution il y aura toujours une transaction entre la base et la machine du mot de passe en claire, donc en plus niveau sécurité c'est pas vraiment le top.

n°1637795
startide
Posté le 06-11-2007 à 18:16:47  profilanswer
 

Oui je me doute, mais ma question c'était aussi : c'est une opération de mise à jour unique, ou bien c'est un process qui va se répéter souvent ?
 
Si c'est une maj unique, tu le fais une fois et puis voilà t'effaces tout et tes passwords sont convertis... si c'est souvent vouais c'est pas la solution. D'ailleurs comment faire cohabiter deux types de données dans un même champ ? et comment les distinguer ?

n°1637807
Evanok
Posté le 06-11-2007 à 19:01:39  profilanswer
 

En gros j'aimerai que ça se répète. J'aimerai que dès que j'insers un nouvelle accès, il me code directement en MD5 le champ password.
 
je n'aurai même plus les mot de passe en clair dans la base de donnée, uniquement les mot de passe crypté. A la limite je peux aussi garder les mdp en clair mais c'est pas indispensable.

n°1637999
startide
Posté le 07-11-2007 à 10:16:39  profilanswer
 

ben insert into table foo = md5($foo) ? Tu causes de java et de triggers, c'est des notions que je connais pas, à mon avis ton soucis est trop avancé pour mes maigres connaissances ^^

n°1638370
MagicBuzz
Posté le 07-11-2007 à 15:46:04  profilanswer
 

ben tu peux faire effectivement écrire un trigger.
 
insert (login, pass) values ('magicbuzz', 'monpassenclair')
et le trigger "before insert" va t'encoder pass avant de l'inserrer effectivement.  
 
=> t'as la garantie que l'encodage sera systématique.
 
par contre, comme indiqué, cela veut dire que ton mot de passe circule en clair entre ton application et ta base de données. selon le niveau de sécurité recherché, c'est pas forcément très heureux.
 
bon, après tu peux aussi travailler avec une connexion sécurisée SSL entre ton application et ta base, à ce moment tu t'en moques un peu... d'autant qu'il est de notoriété publique depuis 1991 que MD5 ne vaut absolument pas un clou rouillé tordu en ce qui concerne la sécurité.


Message édité par MagicBuzz le 07-11-2007 à 15:46:29
n°1638423
startide
Posté le 07-11-2007 à 16:24:12  profilanswer
 

Comment gérer des pass de manière sécurisée si md5 sux les loutres ?

mood
Publicité
Posté le 07-11-2007 à 16:24:12  profilanswer
 

n°1638425
MagicBuzz
Posté le 07-11-2007 à 16:26:20  profilanswer
 

en se documentant :o
http://fr.wikipedia.org/wiki/MD5
 
-- et du coup je corrige ce que j'ai dit : depuis 1996 on sait que c'est de la merde, et depuis 2004 on sait le cracker


Message édité par MagicBuzz le 07-11-2007 à 16:27:13
n°1638580
Evanok
Posté le 07-11-2007 à 18:17:53  profilanswer
 

Je dois faire ça dans le cadre d'un projet d'étude donc je ne recherche pas la sécurité sans faille mais juste a essayer de faire les choses un minimum proprement. Et en utilisant un trigger le problème reste le même.  Lit mon premier poste MagicBuzz :). Faire un trigger ok, mais l'encoder après avant peu importe le problème est la, comment encoder une chaine en md5 sous sql ?

n°1638593
MagicBuzz
Posté le 07-11-2007 à 19:02:05  profilanswer
 

Ben ouais, mais t'as jamais répondu à la question caché de "moi" dans le second post du topic : quel SGBD utilises-tu ? Et quel langage ?
 
Entre Oracle, DB2, SQL Server, MySQL, PostGreSQL et autres, y'en a pas deux qui utilisent la même syntaxe pour encrypter des données, pas forcément les mêmes algos, si encore c'est disponible.
 
Et pour la langage, idem.
 
Avec le lien Wiki que je t'ai filé, y'a l'algo pour encoder en MD5, donc à la limite, tu peux t'amuser à écrire ta propre librairie d'encodage.
 
Mais dis-nous déjà quels outils tu utilises, sans ça t'auras pas de réponse précise ;)

n°1638855
MEI
|DarthPingoo(tm)|
Posté le 08-11-2007 à 11:03:48  profilanswer
 

En theorie faut crypter le MDP coté client/serveur de presentation voir serveur d'application, pas coté BDD (sauf si le serveur d'application et la BDD sont dans un sous reseau fermé et suposé inaccesible à un hacker).
 
Et pour authentifier c'est :
if (crypter(mdp_entree) == mdp_base) then mdp_ok = true ;)


Message édité par MEI le 08-11-2007 à 13:24:00

---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1638856
MEI
|DarthPingoo(tm)|
Posté le 08-11-2007 à 11:05:07  profilanswer
 

Evanok a écrit :

Je dois faire ça dans le cadre d'un projet d'étude donc je ne recherche pas la sécurité sans faille mais juste a essayer de faire les choses un minimum proprement. Et en utilisant un trigger le problème reste le même.  Lit mon premier poste MagicBuzz :). Faire un trigger ok, mais l'encoder après avant peu importe le problème est la, comment encoder une chaine en md5 sous sql ?


Le SQL ne sais pas crypter. C'est au language de prog de le faire.
 
En PHP c'est inclu, en Java y'a un package fait pour tres facile (en 1H tu fait le truc google compris), en .NET surement pareil que java, etc.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1639029
Evanok
Posté le 08-11-2007 à 12:55:51  profilanswer
 

bah voila en gros on ne peut pas le faire directement par une requête sql. Donc ce que je vais faire je pense c'est tout simplement un petit programme en java pour administrer la bdd sql, au moins en java je n'aurai aucun problème :).
 
Merci pour vos réponses.

n°1639132
MagicBuzz
Posté le 08-11-2007 à 14:40:17  profilanswer
 

et la réponse, elle est pour quand ? QUEL SGBD ?

n°1639159
MEI
|DarthPingoo(tm)|
Posté le 08-11-2007 à 14:49:47  profilanswer
 

De toutes façons le schema c'est :
 
Plus on crypte tot mieux c'est. Apres s'il veut de la securité, qui fasse pas rigolo, qu'il explique sont architecture et le type d'application.
 
Car evidement une appli Web multitiers se securise pas pareil qu'une appli lourde. :D
 


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1639414
Evanok
Posté le 08-11-2007 à 17:29:13  profilanswer
 

MagicBuzz > j'utilise une bdd MySql

n°1639416
MagicBuzz
Posté le 08-11-2007 à 17:31:04  profilanswer
 

donc dans mysql, t'as simplement la fonction md5() si je ne m'abuse
 
ceci dit, je suis d'accord avec mei, il faut mieux crypter avant. ceci dit, crypter dans un trigger, c'est s'assurer aussi que tout est bien crypté, y compris les données inserrées à la main ou qui proviennent d'autres outils


Message édité par MagicBuzz le 08-11-2007 à 17:31:55
n°1639433
MEI
|DarthPingoo(tm)|
Posté le 08-11-2007 à 17:50:34  profilanswer
 

Apres ca depends l'architecture, il est tres facile en web d'etre securisé (HTTPS), et en application lourde le probleme se pose moins.
 
PS : Rapellons nous que tout les jours lorsque l'on utilise le bon vieux protocole POP notre mot de passe passe en clair sur le reseau. :o


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°1639435
MagicBuzz
Posté le 08-11-2007 à 17:53:30  profilanswer
 

c pour que ça j'utilise rpc over https pour me connecter à exchange :sol:

n°1639442
MEI
|DarthPingoo(tm)|
Posté le 08-11-2007 à 17:58:12  profilanswer
 

Ce qui est dramatique c'est qu'aucun FAI ne propose ni le POPS (okay c'est de la merde), ni l'IMAPS. :D


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Crypter un champ en MD5 dans une base de donnée SQL

 

Sujets relatifs
[SQL] Classement programmeursSynchro Excel/Sql
problème dans un bloc PL/SQL[RESOLU]Probleme legal copie SQL (Haut importance)
connection base de donneeLes variables sont-elles stockées dans la base dans MS SQL Server ?
[SQL] message d'erreur qui n'a pa lieu d'être[RESOLU]Site chez Free - Base SQL distante
Plus de sujets relatifs à : Crypter un champ en MD5 dans une base de donnée SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR