cryptage des mots de passe pour oracle - SQL/NoSQL - Programmation
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) |
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.
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
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.
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.
Marsh Posté le 21-03-2006 à 23:46:36
tain, faut que Marc arrète la binouse pour accepter des pseudos pareils
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 ?)
;-)
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.
Marsh Posté le 22-03-2006 à 10:50:07
c'est coOl, je vais tester cela.
thanks
Marsh Posté le 22-03-2006 à 12:35:35
___ a écrit : |
DBMS_OBFUSCATION_TOOLKIT.MD5
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 :
|
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 ?
Marsh Posté le 24-03-2006 à 11:06:09
Code :
|
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 ;-)
Marsh Posté le 24-03-2006 à 11:39:54
de quelle taille stp, il faudrait que je l'enregistre dans ma base ;-)
VARCHAR2(???)
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...
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