OVH Cloud OVH Cloud

Crypteur de mot de passe.

8 réponses
Avatar
Penguin_X
Allo ! J'voudrais faire une mini crypteur de mot de passe basique en
C++. exemple, toute les lettre de l'alphabet pourrais etre changer par
un autre caratere. Si vous pouvez me donner un piste sa serait gentil.

@+

Penguin_X

8 réponses

Avatar
Marc
Y a + efficace et au moins aussi simple
Tu cryptes avec une clé l'ensemble du jeu de caractères...

Par ex si ta clé est "amdt"
et ta phrase "phrase secrète"
tu procède comme suit

phrase secrète
amdtamdtamdt

'p'->'p'+'a'
'h'->'h'+'m'
'r'->'r'+'d'
'a'->'a'+'t'
's'->'s'+'a'
etc..
pour savoir ce qu'il faut additionner, numero_char % taille_cle
pour décrypter, tu fais l'iverse...
Je te laisse le soin de régler quelques problèmes d'implémentation liés au
fait que 200+200 ne fait pas 400 sur un char. Mais tu peux contourner
facilement ce problème avec des conversions de type char en int par
exemple...
Bon courage
Avatar
Mathieu Peyréga
Y a + efficace et au moins aussi simple
Tu cryptes avec une clé l'ensemble du jeu de caractères...

Par ex si ta clé est "amdt"
et ta phrase "phrase secrète"
tu procède comme suit

phrase secrète
amdtamdtamdt

'p'->'p'+'a'
'h'->'h'+'m'
'r'->'r'+'d'
'a'->'a'+'t'
's'->'s'+'a'
etc..
pour savoir ce qu'il faut additionner, numero_char % taille_cle
pour décrypter, tu fais l'iverse...
Je te laisse le soin de régler quelques problèmes d'implémentation liés au
fait que 200+200 ne fait pas 400 sur un char. Mais tu peux contourner
facilement ce problème avec des conversions de type char en int par
exemple...
Bon courage


Un poil plus compliqué mais beaucoup plus efficace :
se servir de la "phrase secrète" pour initialiser un BON générateur de
nombres pseudo-aléatoires. Il y en a dans la lib boost : www.boost.org
ou encore là : http://www.eskimo.com/~weidai/cryptlib.html
(en passant, cette dernière lib fait évidemment beaucoup plus que ça et
à peut ptrès tout ce dont on peut avoir besoin)

Et puis appliquer la méthode que tu donnes avec des données issues du
générateur aléatoire. Ca évite de répeter la phrase secrète ce qui doit
pouvoir éventuellement faire apparaitre des choses statistiquement et
laisser place a des attaques subtiles...

Enfin bon, tout ça est un peu voir complètement HS ici... et je crois
que la question initiale portait sur un mécanisme simple... sans autres
contraites.

Cela dit, pour ne pas être complètement HS, les deux libs que je cite
sont "du bon C++" il me semble.

Cordialement

Mathieu
--
http://matioupi.free.fr/

Avatar
Matthieu Moy
"Marc" writes:

Y a + efficace et au moins aussi simple
Tu cryptes avec une clé l'ensemble du jeu de caractères...


Attention à ne pas utiliser cet algo pour de la vraie crypto quand
même : Si l'attaquant connait une partie du message à décrypter, il
casse la clé.

--
Matthieu

Avatar
Marc
Attention à ne pas utiliser cet algo pour de la vraie crypto quand
même : Si l'attaquant connait une partie du message à décrypter, il
casse la clé.


sur un simple mot de passe, c'est quand même pas facile à casser.
Le problème, c'est qu'un mot de passe crypté reste un mot de passe, ça
dépend d'où on se place.
Si "jojo" est remplacé par "chd!", quelle affaire !

Avatar
Fabien LE LEZ
On Wed, 27 Oct 2004 19:08:08 -0400, Penguin_X
:

J'voudrais faire une mini crypteur de mot de passe basique en
C++.


Un crypteur avec possibilité de décryptage ou un crypteur à sens
unique ?
Pour le crypteur à sens unique, et pour une sécurité modérée, j'ai une
encapsulation d'un générateur de hash MD5 quelque part, je peux te
l'expédier si tu veux. Cet algo n'a plus tellement d'intérêt depuis
que MD5 n'est plus totalement à sens unique, mais pour un petit
bidouillage, ça peut servir.

Sinon, pour divers algorithmes de cryptage, à sens unique ou non, je
t'invite à aller voir fr.comp.algorithmes.


--
;-)

Avatar
kanze
"Marc" wrote in message
news:<4180d86c$0$29511$...

Attention à ne pas utiliser cet algo pour de la vraie crypto quand
même : Si l'attaquant connait une partie du message à décrypter, il
casse la clé.


sur un simple mot de passe, c'est quand même pas facile à casser. Le
problème, c'est qu'un mot de passe crypté reste un mot de passe, ça
dépend d'où on se place.
Si "jojo" est remplacé par "chd!", quelle affaire !


En fait, le problème avec cette solution, c'est que tu as deux mots de
passe -- celui de l'utilisateur, et celui qui a servi de l'encryption.
Une fois un trouvé, l'autre se trouve facilement. Donc :

- Je me crée un mot de passe, disons « kanze ». Je l'encrypte, et je
vois ce que ça donne. Du coup, je peux en rétrouver celui de
l'algorithme, et par la suite, tous les autres mots de passe de
l'utilisateur.

- J'analyse (en désassemblant) le code qui encrypte, et j'y trouve le
mot de passe.

Dans les deux cas, j'ai facilement des entrées dans le système.

Moi, j'avoue que je ne chercherais pas à réinventer la roue. Il existe
des algorithmes, déjà tous codés, d'encryption sécure. (Du fait que j'ai
une implémentation de MD5 dans mes tiroirs, je me baserais probablement
sur lui, même s'il a des faiblesses connues. Altérnativement, on utilise
le mot de passe de l'utilisateur comme mot de passe d'encryption d'un
texte connu -- c'est ce que Unix fait, par exemple, en encryptant avec
un DES modifié.)

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
kanze
Fabien LE LEZ wrote in message
news:...
On Wed, 27 Oct 2004 19:08:08 -0400, Penguin_X
:

J'voudrais faire une mini crypteur de mot de passe basique en
C++.


Un crypteur avec possibilité de décryptage ou un crypteur à sens
unique ?

Pour le crypteur à sens unique, et pour une sécurité modérée, j'ai une
encapsulation d'un générateur de hash MD5 quelque part, je peux te
l'expédier si tu veux. Cet algo n'a plus tellement d'intérêt depuis
que MD5 n'est plus totalement à sens unique, mais pour un petit
bidouillage, ça peut servir.


Où est-ce que tu as vu qu'il n'est pas à sens unique. Tout ce que j'ai
vu, c'est qu'on sait créer plusieurs messages avec la même signature.
Pour une signature donnée, je ne crois pas qu'on sait rétrouver le
message original, ni rétrouver un message quelconque qui a cette
signature. (Je me base sur http://www.cryptography.com/cnews/hash.html.)

Sinon, pour divers algorithmes de cryptage, à sens unique ou non, je
t'invite à aller voir fr.comp.algorithmes.


Pour l'instant, SHA-1 semble le plus indiqué. Mais comme toi, c'est MD-5
que j'ai dans mon tiroir, et pour la plupart d'applications, il suffit.
(Où il ne suffit pas, évidemment, c'est pour la certification des
programmes ou des documents téléchargés par le reseau.)

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
Fabien LE LEZ
On 29 Oct 2004 00:56:22 -0700, :

[MD5]
Où est-ce que tu as vu qu'il n'est pas à sens unique. Tout ce que j'ai
vu, c'est qu'on sait créer plusieurs messages avec la même signature.


Ici, le message est un mot de passe, donc rarement de longueur
supérieure à celle d'un hash MD5. Plus précisément, il y a moins de
mots de passes possibles que de hashs MD5.
Par conséquent, si tu trouves un mot de passe ayant le même MD5 que le
mot de passe "secret", il est fort probable que ces deux mots de
passent soient identiques.

Note : il y a eu une ou deux discussions là-dessus sur
fr.comp.securite.


--
;-)