OVH Cloud OVH Cloud

Cryptage Simple ? (MD5, DES, DSA, ........)

12 réponses
Avatar
TroXsA
Bonjour,

Exist-il pas un mode de cryptage simple ?
exemple :
Criptage(TypeDeCryptage, Mode-Decrypt ou Cryptage, ClefDeCryptageStr,
Fichier ou ChaineStr)
Criptage(MD5, Decrypt, "maclef", TextBox1.text)
ou encore Criptage(DES, Cryptage, "maclef", "c:\monfichier.txt")

Faut-il faire sa class ? ou, il existe une methode simple ? (c'est domage si
cela n'existe pas)


Cordialement,

Site : http://www.troxsa.info
Mail : http://cerbermail.com/?rIXgaw9Xsl

10 réponses

1 2
Avatar
Mehdi
On Thu, 9 Mar 2006 17:08:35 +0100, TroXsA wrote:

Exist-il pas un mode de cryptage simple ?
exemple :
Criptage(TypeDeCryptage, Mode-Decrypt ou Cryptage, ClefDeCryptageStr,
Fichier ou ChaineStr)
Criptage(MD5, Decrypt, "maclef", TextBox1.text)
ou encore Criptage(DES, Cryptage, "maclef", "c:monfichier.txt")

Faut-il faire sa class ? ou, il existe une methode simple ? (c'est domage si
cela n'existe pas)



Si tu veux utiliser la syntaxe exacte que tu indique la, il te faut faire
ta classe. Mais ca ne sera pas bien compliqué, les classes du .NET
Framework sont quasiment aussi simple a utiliser. Pour RSA par exemple, tu
cree une instance de RSACryptoServiceProvider en lui passant ta paire de
clé (ou rien si tu veux avoir une paire automatiquement générée pour toi)
puis Encrypt() et Decrypt(). Pas sorcier. Pour MD5 pareil: cree
MD5CryptoServiceProvider, affecte ta clé a la bien nommée propriété Key
puis ComputeHash (pas de decrypt avec MD5, c'est un algorithme de hashage).
Pour DES, il va te falloir 2 lignes de codes en plus pour créer les
Enryptor et Decryptor avant de pouvoir crypter et decrypter tes donnée,
rien de bien méchant.

Dans les syntaxes qui tu propose, il manque un élément de taille quand
meme: quel encodage la méthode est-elle sensée utiliser pour tes chaines de
caracteres ? ASCII ? Unicode ? UTF-8 ? Ton encodage a toi du terroir ? Ca
ne se devine pas ce genre de choses.
Avatar
TroXsA
Bonjour,
Merci de m'avoir repondu :)
Dans le msdn il y a des exemples mais un peux plus complex par rapport a ce
que tu dit
aurait tu un exemple ?

@+



Cordialement,

Site : http://www.troxsa.info
Mail : http://cerbermail.com/?rIXgaw9Xsl




"Mehdi" a écrit dans le message de news:
ms72843az8sq$
On Thu, 9 Mar 2006 17:08:35 +0100, TroXsA wrote:

Exist-il pas un mode de cryptage simple ?
exemple :
Criptage(TypeDeCryptage, Mode-Decrypt ou Cryptage, ClefDeCryptageStr,
Fichier ou ChaineStr)
Criptage(MD5, Decrypt, "maclef", TextBox1.text)
ou encore Criptage(DES, Cryptage, "maclef", "c:monfichier.txt")

Faut-il faire sa class ? ou, il existe une methode simple ? (c'est domage
si
cela n'existe pas)



Si tu veux utiliser la syntaxe exacte que tu indique la, il te faut faire
ta classe. Mais ca ne sera pas bien compliqué, les classes du .NET
Framework sont quasiment aussi simple a utiliser. Pour RSA par exemple, tu
cree une instance de RSACryptoServiceProvider en lui passant ta paire de
clé (ou rien si tu veux avoir une paire automatiquement générée pour toi)
puis Encrypt() et Decrypt(). Pas sorcier. Pour MD5 pareil: cree
MD5CryptoServiceProvider, affecte ta clé a la bien nommée propriété Key
puis ComputeHash (pas de decrypt avec MD5, c'est un algorithme de
hashage).
Pour DES, il va te falloir 2 lignes de codes en plus pour créer les
Enryptor et Decryptor avant de pouvoir crypter et decrypter tes donnée,
rien de bien méchant.

Dans les syntaxes qui tu propose, il manque un élément de taille quand
meme: quel encodage la méthode est-elle sensée utiliser pour tes chaines
de
caracteres ? ASCII ? Unicode ? UTF-8 ? Ton encodage a toi du terroir ? Ca
ne se devine pas ce genre de choses.


Avatar
TroXsA
J'ai trouvé un petit peu comment faire, mais apres je sais plus comment
faire

Dim crypto As New RSACryptoServiceProvider()
Dim uEncode As New System.Text.UnicodeEncoding()
Dim byt() As Byte = uEncode.GetBytes("test")
Dim Nouv() As Byte = crypto.Encrypt(byt, False)

Comment ecrire les valeurs en format string ?
et apres comment faire le decrypt ?
je vais continuer a rechercher de mon coter, si quel un sais comment faire
je suis preneur :)

@+


Cordialement,

Site : http://www.troxsa.info
Mail : http://cerbermail.com/?rIXgaw9Xsl




"TroXsA" a écrit dans le message de news:
durrku$4vf$

Bonjour,
Merci de m'avoir repondu :)
Dans le msdn il y a des exemples mais un peux plus complex par rapport a
ce que tu dit
aurait tu un exemple ?

@+



Cordialement,

Site : http://www.troxsa.info
Mail : http://cerbermail.com/?rIXgaw9Xsl




"Mehdi" a écrit dans le message de news:
ms72843az8sq$
On Thu, 9 Mar 2006 17:08:35 +0100, TroXsA wrote:

Exist-il pas un mode de cryptage simple ?
exemple :
Criptage(TypeDeCryptage, Mode-Decrypt ou Cryptage, ClefDeCryptageStr,
Fichier ou ChaineStr)
Criptage(MD5, Decrypt, "maclef", TextBox1.text)
ou encore Criptage(DES, Cryptage, "maclef", "c:monfichier.txt")

Faut-il faire sa class ? ou, il existe une methode simple ? (c'est
domage si
cela n'existe pas)



Si tu veux utiliser la syntaxe exacte que tu indique la, il te faut faire
ta classe. Mais ca ne sera pas bien compliqué, les classes du .NET
Framework sont quasiment aussi simple a utiliser. Pour RSA par exemple,
tu
cree une instance de RSACryptoServiceProvider en lui passant ta paire de
clé (ou rien si tu veux avoir une paire automatiquement générée pour toi)
puis Encrypt() et Decrypt(). Pas sorcier. Pour MD5 pareil: cree
MD5CryptoServiceProvider, affecte ta clé a la bien nommée propriété Key
puis ComputeHash (pas de decrypt avec MD5, c'est un algorithme de
hashage).
Pour DES, il va te falloir 2 lignes de codes en plus pour créer les
Enryptor et Decryptor avant de pouvoir crypter et decrypter tes donnée,
rien de bien méchant.

Dans les syntaxes qui tu propose, il manque un élément de taille quand
meme: quel encodage la méthode est-elle sensée utiliser pour tes chaines
de
caracteres ? ASCII ? Unicode ? UTF-8 ? Ton encodage a toi du terroir ? Ca
ne se devine pas ce genre de choses.






Avatar
Mehdi
On Fri, 10 Mar 2006 14:27:45 +0100, TroXsA wrote:

Dim crypto As New RSACryptoServiceProvider()
Dim uEncode As New System.Text.UnicodeEncoding()
Dim byt() As Byte = uEncode.GetBytes("test")
Dim Nouv() As Byte = crypto.Encrypt(byt, False)

Comment ecrire les valeurs en format string ?
et apres comment faire le decrypt ?
je vais continuer a rechercher de mon coter, si quel un sais comment faire
je suis preneur :)



T'a fait le plus gros du boulot la. Maintenant que tu a ton tableau d'octet
crypté, tu peux l'écrire dans un fichier ou sur une socket par exemple en
l'envoyant simplement sur sa Stream. Si tu veux afficher les donnée cryptée
a l'écran, le plus simple est d'utiliser une boucle 'for' et d'afficher les
valeurs de chaque octet (en utilisant la fonction ToString() de la classe
byte) les unes a la suite des autres.

Si pour une raison quelconque tu tiens absolument a afficher les données
cryptées sous la forme d'une string, alors tu peux juste créer un encodeur
(UnicodeEncoding, ASCIIEncoding, ce que tu veux) et utiliser sa méthode
GetString() pour récupérer une string a partir de ton tableau d'octet.
Attention cependant, les octets dans le tableau d'octet crypté peuvent
avoir n'importe quel valeur comprise entre 0 et 255. Selon l'encodage
utilisé, la string correspondant a ton tableau d'octet contiendra presque
certainement des caracteres non affichables. Par exemple, en ASCII, un
octet de valeur 8 correspond au caractere "Backspace" que tu aura du mal a
afficher dans une TextBox. Le mieux est d'utiliser l'encodage Base64 qui a
été concu pour résoudre ce probleme particulier:

[désolé, c'est en C#, mon VB n'est assez encore assez bon]
string encryptedString = Convert.ToBase64String(Nouv);

Pour le décryptage, tu récupere le tableau d'octet cryptés (en le lisant
depuis un fichier binaire, une socket, ou si on te file une string en
base64 en utilisant la méthode Convert.FromBase64String) puis tu appele la
méthode Decrrypt de ton RSACryptoServiceProvider. Tu va récupérer un
nouveau tableau d'octet et tu n'aura plus qu'a le convertir en string en
utilisant l'encodage approprié (dans le cas de ton exempe,
UnicodeEncoding).

Bien entendu, pour le décryptage tu aura besoin de la clé privée
correspondant a la clé publique utilisée pour le cryptage. Vu que dans ton
exemple tu a demandé a ce qu'une paire de clé soit générée automatiquement
pour toi, si tu veux pouvoir décrypter plus tard ce que tu a crypté, il te
faut stocker les clés quelque part (dans un endoit sur!). Tu peux utiliser
la méthode RSACryptoServiceProvider.ToXmlString() pour récupérer tes clés
sous la forme d'une string en XML puis plus tard la méthode FromXmlString
pour réimporter tes clés.
Avatar
TroXsA
re Bonjour,


Comment faire pour définir une clef ? car a chaque fois que je met un
paramètre ça plante

Ce que je recherche a faire c'est de cryptage d'un mot de passe dans le
registre .
Le mot de passe ce trouve dans une textbox je récupéré la valeur de la
textbox pour ensuite la coder en RSA
jusqu'a là j'arrive a faire un cryptage d'une chaine de caractère puis
l'afficher en string, mais pour faire un décryptage c'est autre chose
j'arrive pas a faire ce que tu dit
une fois codé ça fait 128 bytes (si c'est bien le therme) mais une fois
décoder ça fait 126 mais ou sont passer les deux autres ?


Merci de ton aide


Cordialement,

Site : http://www.troxsa.info
Mail : http://cerbermail.com/?rIXgaw9Xsl




"Mehdi" a écrit dans le message de news:

On Fri, 10 Mar 2006 14:27:45 +0100, TroXsA wrote:

Dim crypto As New RSACryptoServiceProvider()
Dim uEncode As New System.Text.UnicodeEncoding()
Dim byt() As Byte = uEncode.GetBytes("test")
Dim Nouv() As Byte = crypto.Encrypt(byt, False)

Comment ecrire les valeurs en format string ?
et apres comment faire le decrypt ?
je vais continuer a rechercher de mon coter, si quel un sais comment
faire
je suis preneur :)



T'a fait le plus gros du boulot la. Maintenant que tu a ton tableau
d'octet
crypté, tu peux l'écrire dans un fichier ou sur une socket par exemple en
l'envoyant simplement sur sa Stream. Si tu veux afficher les donnée
cryptée
a l'écran, le plus simple est d'utiliser une boucle 'for' et d'afficher
les
valeurs de chaque octet (en utilisant la fonction ToString() de la classe
byte) les unes a la suite des autres.

Si pour une raison quelconque tu tiens absolument a afficher les données
cryptées sous la forme d'une string, alors tu peux juste créer un encodeur
(UnicodeEncoding, ASCIIEncoding, ce que tu veux) et utiliser sa méthode
GetString() pour récupérer une string a partir de ton tableau d'octet.
Attention cependant, les octets dans le tableau d'octet crypté peuvent
avoir n'importe quel valeur comprise entre 0 et 255. Selon l'encodage
utilisé, la string correspondant a ton tableau d'octet contiendra presque
certainement des caracteres non affichables. Par exemple, en ASCII, un
octet de valeur 8 correspond au caractere "Backspace" que tu aura du mal a
afficher dans une TextBox. Le mieux est d'utiliser l'encodage Base64 qui a
été concu pour résoudre ce probleme particulier:

[désolé, c'est en C#, mon VB n'est assez encore assez bon]
string encryptedString = Convert.ToBase64String(Nouv);

Pour le décryptage, tu récupere le tableau d'octet cryptés (en le lisant
depuis un fichier binaire, une socket, ou si on te file une string en
base64 en utilisant la méthode Convert.FromBase64String) puis tu appele la
méthode Decrrypt de ton RSACryptoServiceProvider. Tu va récupérer un
nouveau tableau d'octet et tu n'aura plus qu'a le convertir en string en
utilisant l'encodage approprié (dans le cas de ton exempe,
UnicodeEncoding).

Bien entendu, pour le décryptage tu aura besoin de la clé privée
correspondant a la clé publique utilisée pour le cryptage. Vu que dans ton
exemple tu a demandé a ce qu'une paire de clé soit générée automatiquement
pour toi, si tu veux pouvoir décrypter plus tard ce que tu a crypté, il te
faut stocker les clés quelque part (dans un endoit sur!). Tu peux utiliser
la méthode RSACryptoServiceProvider.ToXmlString() pour récupérer tes clés
sous la forme d'une string en XML puis plus tard la méthode FromXmlString
pour réimporter tes clés.


Avatar
TroXsA
j'ai juste oublié de coller le code :)
peux tu me dire ce qu'il va pas ?

'
' Declaration
'
Dim Crypto As New RSACryptoServiceProvider()
Dim uEncode As New System.Text.UnicodeEncoding()
'
' Je crypte le mot 'test'
'
Dim byt() As Byte = uEncode.GetBytes("test")
Dim Nouv() As Byte = Crypto.Encrypt(byt, False)
'
' Affichage du cryptage en string en base 64
'
Dim str As String = Convert.ToBase64String(Nouv)
'
' Decodage
'
Dim Decrypt() As Byte = uEncode.GetBytes(str)
Dim Decode() As Byte = Crypto.Decrypt(Decrypt, False) 'ici ça plante
Dim DecoStr As String = Convert.ToBase64String(Decode)




Cordialement,

Site : http://www.troxsa.info
Mail : http://cerbermail.com/?rIXgaw9Xsl




"TroXsA" a écrit dans le message de news:
dv3tap$snu$

re Bonjour,


Comment faire pour définir une clef ? car a chaque fois que je met un
paramètre ça plante

Ce que je recherche a faire c'est de cryptage d'un mot de passe dans le
registre .
Le mot de passe ce trouve dans une textbox je récupéré la valeur de la
textbox pour ensuite la coder en RSA
jusqu'a là j'arrive a faire un cryptage d'une chaine de caractère puis
l'afficher en string, mais pour faire un décryptage c'est autre chose
j'arrive pas a faire ce que tu dit
une fois codé ça fait 128 bytes (si c'est bien le therme) mais une fois
décoder ça fait 126 mais ou sont passer les deux autres ?


Merci de ton aide


Cordialement,

Site : http://www.troxsa.info
Mail : http://cerbermail.com/?rIXgaw9Xsl




"Mehdi" a écrit dans le message de news:

On Fri, 10 Mar 2006 14:27:45 +0100, TroXsA wrote:

Dim crypto As New RSACryptoServiceProvider()
Dim uEncode As New System.Text.UnicodeEncoding()
Dim byt() As Byte = uEncode.GetBytes("test")
Dim Nouv() As Byte = crypto.Encrypt(byt, False)

Comment ecrire les valeurs en format string ?
et apres comment faire le decrypt ?
je vais continuer a rechercher de mon coter, si quel un sais comment
faire
je suis preneur :)



T'a fait le plus gros du boulot la. Maintenant que tu a ton tableau
d'octet
crypté, tu peux l'écrire dans un fichier ou sur une socket par exemple en
l'envoyant simplement sur sa Stream. Si tu veux afficher les donnée
cryptée
a l'écran, le plus simple est d'utiliser une boucle 'for' et d'afficher
les
valeurs de chaque octet (en utilisant la fonction ToString() de la classe
byte) les unes a la suite des autres.

Si pour une raison quelconque tu tiens absolument a afficher les données
cryptées sous la forme d'une string, alors tu peux juste créer un
encodeur
(UnicodeEncoding, ASCIIEncoding, ce que tu veux) et utiliser sa méthode
GetString() pour récupérer une string a partir de ton tableau d'octet.
Attention cependant, les octets dans le tableau d'octet crypté peuvent
avoir n'importe quel valeur comprise entre 0 et 255. Selon l'encodage
utilisé, la string correspondant a ton tableau d'octet contiendra presque
certainement des caracteres non affichables. Par exemple, en ASCII, un
octet de valeur 8 correspond au caractere "Backspace" que tu aura du mal
a
afficher dans une TextBox. Le mieux est d'utiliser l'encodage Base64 qui
a
été concu pour résoudre ce probleme particulier:

[désolé, c'est en C#, mon VB n'est assez encore assez bon]
string encryptedString = Convert.ToBase64String(Nouv);

Pour le décryptage, tu récupere le tableau d'octet cryptés (en le lisant
depuis un fichier binaire, une socket, ou si on te file une string en
base64 en utilisant la méthode Convert.FromBase64String) puis tu appele
la
méthode Decrrypt de ton RSACryptoServiceProvider. Tu va récupérer un
nouveau tableau d'octet et tu n'aura plus qu'a le convertir en string en
utilisant l'encodage approprié (dans le cas de ton exempe,
UnicodeEncoding).

Bien entendu, pour le décryptage tu aura besoin de la clé privée
correspondant a la clé publique utilisée pour le cryptage. Vu que dans
ton
exemple tu a demandé a ce qu'une paire de clé soit générée
automatiquement
pour toi, si tu veux pouvoir décrypter plus tard ce que tu a crypté, il
te
faut stocker les clés quelque part (dans un endoit sur!). Tu peux
utiliser
la méthode RSACryptoServiceProvider.ToXmlString() pour récupérer tes clés
sous la forme d'une string en XML puis plus tard la méthode FromXmlString
pour réimporter tes clés.






Avatar
Mehdi
On Mon, 13 Mar 2006 14:51:41 +0100, TroXsA wrote:

Ce que je recherche a faire c'est de cryptage d'un mot de passe dans le
registre .



La, je t'arrete tout de suite: "cryptage d'un mot de passe" + "dans le
registre". Il est tres rare d'avoir a stocker un mot de passe crypté. Pour
la simple et bonne raison que, dans la plupart des cas, si ton appli est
capable de décrypter le mot de passe alors n'importe qui le peux. Du, il ne
sert a rien de s'embeter a crypter le mot de passe. Il existe certains cas
ou stocker un mot de passe crypté est nécessaire et peux se faire de
maniere plus ou moins sure (souvent en utilisant des API spécifiques a l'OS
faitent expressément pour cela) mais ce sont des cas particuliers.

Le mot de passe ce trouve dans une textbox je récupéré la valeur de la
textbox pour ensuite la coder en RSA



Bon, la je ne comprends plus rien. Que vient faire un algorithme de
cryptage asymétrique dans une histoire de stockage de mot passe ?

J'ai l'impression (mais je peux me tromper) que tu prends le cryptage comme
une solution magique qui en 3 lignes de code va te permettre de "protéger"
tes données. Le cryptage ce n'est pas ca. Comme dit le vieux proverbe
chinois : "si tu penses que le cryptage va résoudre ton probleme, alors tu
n'a sans doute pas compris le probleme".

Donc et avant d'aller plus loin : que cherches-tu a faire exactement ? Quel
est ton probleme ?
Avatar
Mehdi
On Mon, 13 Mar 2006 15:04:57 +0100, TroXsA wrote:

j'ai juste oublié de coller le code :)
peux tu me dire ce qu'il va pas ?



Le probleme est la:

Dim str As String = Convert.ToBase64String(Nouv)
'
' Decodage
'
Dim Decrypt() As Byte = uEncode.GetBytes(str)
Dim Decode() As Byte = Crypto.Decrypt(Decrypt, False) 'ici ça plante
Dim DecoStr As String = Convert.ToBase64String(Decode)



Tu encodes la tableau d'octets cryptés en base64 et tu stockes ca dans la
variable 'str'. Puis, lors du décryptage, tu décode 'str' en utilisant un
décodeur Unicode ! Forcément, ca ne peux pas marcher. 'str' est une string
encodée en base64 et doit etre décodée par un décodeur base64, pas Unicode.
La derniere ligne ne va pas non plus. Tu récupere les octets décodés dans
le tableau 'Decode' puis tu transforme ca en String en utilisant un
décodeur base64. Mais tu avait encodé la String originale en utilisant en
encodeur Unicode. Meme probleme.
Avatar
TroXsA
J'ai trouvé mon erreur mais il me reste a resoudre le probleme de la 'clef'
je sais pas comment faire ?
'Dim Crypto As New RSACryptoServiceProvider(128) ça fonctionne pas ?


voila le code si ça peu aidé d'autre personne :)
_______________________________________________________
'
' Declaration
'
Dim Crypto As New RSACryptoServiceProvider()
Dim uEncode As New System.Text.UnicodeEncoding()
'
' Je crypte le mot 'test'
'
Dim byt() As Byte = uEncode.GetBytes("test")
Dim Nouv() As Byte = Crypto.Encrypt(byt, False)
'
' Affichage du cryptage en string en base 64
'
Dim str As String = Convert.ToBase64String(Nouv)
'
' Decodage
'
Dim chose As New System.Text.UnicodeEncoding
Dim Decrypt() As Byte = chose.GetBytes(str)
Dim Decode() As Byte = Crypto.Decrypt(Nouv, False) 'ici ça plante
Dim DecoStr As String = chose.GetString(Decode)
________________________________________________________


En tout cas je te remerci pour toute tes explications elles m'ont beaucoup
aidé


Cordialement,

Site : http://www.troxsa.info
Mail : http://cerbermail.com/?rIXgaw9Xsl
Avatar
TroXsA
Ce que je recherche a faire c'est simplement de faire un cryptage de mot de
passe qui sera ré-utiliser dans le programme
c'est un peux comme le fait certain programme comme Outlook Express, Outlook
ou encore Internet Explorer, et bien d'autre programme ...

En gros je stocke tous un tas de paramètres dans le registre qui n'ont pas
besoin de cryptage, mais le mot de passe est le login reste des données
sensible je les cryptes pour déjà ne pas les données en clair et facilité la
tache, et le cryptage en soit reste un bon moyen de décourager de nombreuse
personnes.

je sais qu'un cryptage peut être casser mais ceci reste quand même pour les
plus acharnés.



A bientot :)

Cordialement,

Site : http://www.troxsa.info
Mail : http://cerbermail.com/?rIXgaw9Xsl




"Mehdi" a écrit dans le message de news:

On Mon, 13 Mar 2006 14:51:41 +0100, TroXsA wrote:

Ce que je recherche a faire c'est de cryptage d'un mot de passe dans le
registre .



La, je t'arrete tout de suite: "cryptage d'un mot de passe" + "dans le
registre". Il est tres rare d'avoir a stocker un mot de passe crypté. Pour
la simple et bonne raison que, dans la plupart des cas, si ton appli est
capable de décrypter le mot de passe alors n'importe qui le peux. Du, il
ne
sert a rien de s'embeter a crypter le mot de passe. Il existe certains cas
ou stocker un mot de passe crypté est nécessaire et peux se faire de
maniere plus ou moins sure (souvent en utilisant des API spécifiques a
l'OS
faitent expressément pour cela) mais ce sont des cas particuliers.

Le mot de passe ce trouve dans une textbox je récupéré la valeur de la
textbox pour ensuite la coder en RSA



Bon, la je ne comprends plus rien. Que vient faire un algorithme de
cryptage asymétrique dans une histoire de stockage de mot passe ?

J'ai l'impression (mais je peux me tromper) que tu prends le cryptage
comme
une solution magique qui en 3 lignes de code va te permettre de "protéger"
tes données. Le cryptage ce n'est pas ca. Comme dit le vieux proverbe
chinois : "si tu penses que le cryptage va résoudre ton probleme, alors tu
n'a sans doute pas compris le probleme".

Donc et avant d'aller plus loin : que cherches-tu a faire exactement ?
Quel
est ton probleme ?


1 2