cryptage des mots de passe pour oracle

cryptage des mots de passe pour oracle - SQL/NoSQL - Programmation

Marsh Posté le 21-03-2006 à 14:39:57    

bonjour,
 
comment faire pour enregistrer des mots de passe dans Oracle de facon cryptée, pour les rendre illisibles.
 
Quels est le type du champ à créer et comment le coder sous Oracle ?
 
merci

Reply

Marsh Posté le 21-03-2006 à 14:39:57   

Reply

Marsh Posté le 21-03-2006 à 16:43:59    

Bonjour cher ou chère ___
 
Un mot de passe est un mot, donc il s'enregistre comme n'importe quel mot.
Si le mot de passe de 'Toto' est "chandernagor", alors on peut l'enregistrer avec

INSERT INTO tb_user (user_id, user_name, user_pwd)
VALUES (123, 'Toto', 'chandernagor');


Mais peut-être que la question est : comment créer un mot de passe ?
Il existe beaucoup de méthodes différentes, mais cette création ne se fait habituellement pas en SQL qui est un langage d'interrogation de base de données. Cette création se fait dans le langage qui contient les appels SQL, qui peut-être le langage C, le PHP, le PL/QL ou autre. Pour répondre, il faudrait nous dire quel langage et algorithme de cryptage il faut utiliser.
 
Petite astuce à connaitre : si le mot de passe est susceptible de contenir des caractères dont la valeur Ascii est inférieure ou égale à 32 (32 est le code de l'espace, et les caractères inférieurs sont dit "non-impimables" comme le retour charriot, le zéro binaire, etc.), alors il ne faut pas stocker ce mot de passe dans un champ déclaré en varchar ni en varchar2, mais en char. Mais on a moins de soucis quand le mot de passe ne contient que des caractères imprimables, sans espace à la fin.


Message édité par olivthill le 21-03-2006 à 17:02:31
Reply

Marsh Posté le 21-03-2006 à 17:44:30    

Regarde du coté du package dbms_obfuscation_toolkit qui contient des procédures pour crypter/décrypter :)
 
Le plus simple étant de créer un user Oracle ;)

Reply

Marsh Posté le 21-03-2006 à 17:45:36    

POur crypter les données sous Oracle il existe un package Oracle :
DBMS_OBFUSCATION_TOOLKIT
 
Si tu veux plus de détail n'hésites pas je pourrais t'envoyer la doc complete du package.
 

Reply

Marsh Posté le 21-03-2006 à 20:25:43    

les packages de crypto d'oracle ne marche vraiment pas bien du tout et ne sont pas très éfficace niveau sécurité (facile à déchiffré).  
Moi ce que je te conseille donc c'est de chiffré le mot de passe avec l'applic qui fait tourné la bd.  
 
Prennons mon exemple actuellement, mon mot de passe arrive à mes WebServices JAVA, un digest est crée a partir du password, et enregistré dans la base de données.

Reply

Marsh Posté le 21-03-2006 à 23:46:36    

tain, faut que Marc arrète la binouse pour accepter des pseudos pareils  [:mlc]

Reply

Marsh Posté le 22-03-2006 à 10:34:29    

tout d'abord merci pour vos réponses.
 
en fait sous mySql, il existe un fonction md5 (à partir du php) qui me permet de crypter le mot de passe dans la BD (et pas de l'enregistrer en clair comme le dit olivthill ).
 
Donc je cherchais un truc simple équivalent sous Oracle.  
Je suis d'accord pour faire l'insertion du mdp crypté par l'appli dans la base (

Citation :

chiffré le mot de passe avec l'applic qui fait tourné la bd.

),
 
mais dans ce cas quel type de champ dois-je faire ? (VARCHAR2 de combien par exemple ?)
 
;-)

Reply

Marsh Posté le 22-03-2006 à 10:36:54    

Si tu veux stocker une version hashée le plus simple c'est de faire le hashage dans l'appli, non?
Dans le cas d'un md5, le hash est sur 32 caractères.;)


Message édité par skeye le 22-03-2006 à 10:37:05

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 22-03-2006 à 10:50:07    

c'est coOl, je vais tester cela.
 
thanks


Message édité par ___ le 22-03-2006 à 11:48:58
Reply

Marsh Posté le 22-03-2006 à 12:35:35    

___ a écrit :


en fait sous mySql, il existe un fonction md5 (à partir du php) qui me permet de crypter le mot de passe dans la BD (et pas de l'enregistrer en clair comme le dit olivthill ).


 
DBMS_OBFUSCATION_TOOLKIT.MD5 :D

Reply

Marsh Posté le 22-03-2006 à 12:35:35   

Reply

Marsh Posté le 23-03-2006 à 16:08:51    

comment utiliser le package DBMS_OBFUSCATION_TOOLKIT.MD5 ?
 
car dans une requete comme celle-ci il y a un pb:
 

Code :
  1. insert into ... values (DBMS_OBFUSCATION_TOOLKIT.MD5('toto'),...);


 
mon champ est RAW(16)
 
mais j'ai une erreur ORA06553 :... too many declarations of MD5 in this call.
 
Qu'est ce que ça veut dire ?

Reply

Marsh Posté le 24-03-2006 à 11:06:09    

Code :
  1. SQL> CREATE FUNCTION md5(v_in VARCHAR2)
  2.   2  RETURN VARCHAR2
  3.   3  IS
  4.   4  result VARCHAR2(4000);
  5.   5  BEGIN
  6.   6  result := dbms_obfuscation_toolkit.md5(input_string=>v_in);
  7.   7  RETURN result;
  8.   8  END;
  9.   9  /
  10. Fonction créée.
  11. SQL> select md5('toto') from dual;
  12. MD5('TOTO')
  13. --------------------------------------------------------------------------------
  14. ¿¿Rb¿?¿¿z¿¿¿u%

Reply

Marsh Posté le 24-03-2006 à 11:08:58    

merci,
 
on est obligé de créer un fonction PLSQL, le package n'est pas utilisable directement?
 
quel est le type retourné par la fonction jsuste ci -dessus md5 ?
 
car je vois VARCHAR2(4000), j'ai aussi lu sur le net des RAW(16), au dessus on me dit 32...
 
Cette méthode me convient quand meme ;-)


Message édité par ___ le 24-03-2006 à 11:12:42
Reply

Marsh Posté le 24-03-2006 à 11:30:34    

ici c'est du varchar :
RETURN VARCHAR2 ;)

Reply

Marsh Posté le 24-03-2006 à 11:39:54    

de quelle taille stp, il faudrait que je l'enregistre dans ma base ;-)
 
VARCHAR2(???)

Reply

Marsh Posté le 24-03-2006 à 12:08:51    

aucune idée... :/

Reply

Marsh Posté le 24-03-2006 à 12:58:18    

http://fr.php.net/md5
 
Ici ils annoncent 32, et à priori l'algorithme est le même pour tout le monde...;)


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-03-2006 à 18:25:00    


j'ai mis un varchar(32) et ça fonctionne.
 
merci à vous !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed