CLASSE POUR CRYPTER/DÉCRYPTER SIMPLEMENT UNE CHAÎNE DE CARACTÈRES
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015
-
29 janv. 2005 à 09:45
thoor72
Messages postés1Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention17 août 2007
-
17 août 2007 à 16:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_RJMS
Messages postés6Date d'inscriptionmardi 15 mars 2005StatutMembreDernière intervention 6 novembre 2007 23 mai 2007 à 09:18
Bonjour !
J'obtiens enu StackOverFlow Exception quand je tente de décrypter une chaîne cryptée avec l'autre méthode (encrypt)
L'exception se passe au niveau de cette méthode (base64String)
public string Decrypt(string base64String)
{
return this.Decrypt(base64String);
}
Y aurait-il une explication et un moyen de contourner ceci ?
Merci !
nseveno
Messages postés21Date d'inscriptionmardi 2 avril 2002StatutMembreDernière intervention12 juin 2008 12 mai 2005 à 20:28
Merci pour ces compléments sur le mot de passe, je comprends mieux l'histoire de l'entropie maintenant.
Pour ce qui est de la classe ProtectedStorage, je ne la trouve pas. Peut être sera-t elle incluse dans le FW 2.0 ? De toutes façons ça je ne pense pas qu'il y ait une classe pour faire ça dans le FW 1.1, sinon ils ne se seraient pas fatigués à écrire un article complet sur le sujet sur MSDN Patterns & Practices...
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 11 mai 2005 à 22:10
Bien joué pour la protection de la clef. Pour la petite histoire, dans le cas du cryptage utilisateur, si vous changez le mot de passe de l'utilisateur depuis la console d'administration, la clef est irrécupérable. Ceci garantie l'impossibilité du vol des données par un administrateur. c'est pour cette raison que l'option d'entropie est ignorée : elle est inutile.
Je crois que la classe protectedstorage du framework permet d'écrire dans le fichier crypté utilisateur sans passer explicitement par les API windows.
nseveno
Messages postés21Date d'inscriptionmardi 2 avril 2002StatutMembreDernière intervention12 juin 2008 31 janv. 2005 à 20:46
Merci pour tes précieux conseils Warny. C'était autant pour le FeedBack que pour partager que j'ai posté ce source. Et là je suis comblé pour la partie FeedBack :-)
Un collègue m'a déjà expliqué ce système de crypter la clé. Je posterais une nouvelle version de ma classe dès que j'aurais mis tout ça au propre...
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 29 janv. 2005 à 09:45
Tient, voila quelqu'un de bien qui ne cherche pas à réinventer la poudre.
Les deux failles de ton système sont :
- DES est quelque peu dépassé par la puissance des machines. Utilise plutot DES-3 ou AES pour crypter
-Ta clef comme tu le remarques toi-même n'est pas protégée. Utilise un cryptage asymétriqe (RSA) pour ça (tu as aussi les classes dans le framework)
Pour l'envoi d'un message :
- tu généres une clef symétrique (et totalement aléatoire)
- tu cryptes symétriquement (DES) ton message avec
- tu cryptes la clef symétrique avec la clef publique de ton correspondant (RSA)
- tu agrèges dans le message la clef symétrique crypté et le message crypté
- tu envoie le message crypté
Pour la réception
- tu extrais la clef symétrique crypté
- tu la décryptes avec la clef privée
- tu décryptes le message avec la clef symétrique décryptée
- tu peux lire ton message en clair...
Ce protocole de communication est celui qui s'applique dans PGP. On utilise ce protocole parce que c'est beaucoup trop long d'utiliser RSA sur tout le message, mais ça provoque deux points d'attaques possible. Ce qui ne veut pas dire que c'est facile à attaquer.
DES-3 ou triple DES c'est DES trois fois de suite avec 3 clefs différentes, comme tu n'utilise que 56bits de ton aglomération SHA pour faire un DES, utilise les bits suivants comme clefs pour les deuxième et troisième passages
17 août 2007 à 16:57
{
return this.Decrypt(base64String);
}
faut mettre return this.Decrypt(base64String , "");
23 mai 2007 à 09:18
J'obtiens enu StackOverFlow Exception quand je tente de décrypter une chaîne cryptée avec l'autre méthode (encrypt)
L'exception se passe au niveau de cette méthode (base64String)
public string Decrypt(string base64String)
{
return this.Decrypt(base64String);
}
Y aurait-il une explication et un moyen de contourner ceci ?
Merci !
12 mai 2005 à 20:28
Pour ce qui est de la classe ProtectedStorage, je ne la trouve pas. Peut être sera-t elle incluse dans le FW 2.0 ? De toutes façons ça je ne pense pas qu'il y ait une classe pour faire ça dans le FW 1.1, sinon ils ne se seraient pas fatigués à écrire un article complet sur le sujet sur MSDN Patterns & Practices...
11 mai 2005 à 22:10
Je crois que la classe protectedstorage du framework permet d'écrire dans le fichier crypté utilisateur sans passer explicitement par les API windows.
31 janv. 2005 à 20:46
Un collègue m'a déjà expliqué ce système de crypter la clé. Je posterais une nouvelle version de ma classe dès que j'aurais mis tout ça au propre...
29 janv. 2005 à 09:45
Les deux failles de ton système sont :
- DES est quelque peu dépassé par la puissance des machines. Utilise plutot DES-3 ou AES pour crypter
-Ta clef comme tu le remarques toi-même n'est pas protégée. Utilise un cryptage asymétriqe (RSA) pour ça (tu as aussi les classes dans le framework)
Pour l'envoi d'un message :
- tu généres une clef symétrique (et totalement aléatoire)
- tu cryptes symétriquement (DES) ton message avec
- tu cryptes la clef symétrique avec la clef publique de ton correspondant (RSA)
- tu agrèges dans le message la clef symétrique crypté et le message crypté
- tu envoie le message crypté
Pour la réception
- tu extrais la clef symétrique crypté
- tu la décryptes avec la clef privée
- tu décryptes le message avec la clef symétrique décryptée
- tu peux lire ton message en clair...
Ce protocole de communication est celui qui s'applique dans PGP. On utilise ce protocole parce que c'est beaucoup trop long d'utiliser RSA sur tout le message, mais ça provoque deux points d'attaques possible. Ce qui ne veut pas dire que c'est facile à attaquer.
DES-3 ou triple DES c'est DES trois fois de suite avec 3 clefs différentes, comme tu n'utilise que 56bits de ton aglomération SHA pour faire un DES, utilise les bits suivants comme clefs pour les deuxième et troisième passages
Bonne programmation