begin process at 2012 02 11 18:12:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & Cryptage

 > GÉNÉRATEUR DE CLÉS (KEYGEN) AVEC CLÉ PUBLIQUE ET PRIVÉE ET GUID

GÉNÉRATEUR DE CLÉS (KEYGEN) AVEC CLÉ PUBLIQUE ET PRIVÉE ET GUID


 Description

Cliquez pour voir la capture en taille normale
Hello,

Voici mon premier petit programme (rien de génial, mais il fallait que j'apporte ma contribution au site qui m'a tant aidé :D )
Ce petit programme génère des clés de 25 caractères à partir des 4 premiers caractères qui sont aléatoires.

RRRRX-XXXXX-XXXXX-XXXXX (R = Random, X = généré)
Ce qui fait 36^4 soit 1'500'000 de clé valides sur 36^25

En plus de ça, je gère là dedans une clé que j'appelle « privée » que l'on peut se représenter comme le nom de l'application. par ex: "Word2000"
Une fois la clé générée elle sera mélangée avec un MD5 et la clé privée, ce qui permet d'utiliser le même algorithme pour plusieurs applications.
Après ça je propose une option qui permet de remélanger cette clé avec le GUID de la machine (ce qui rend la clé uniquement valable pour la machine en question).
Et pour couronner le tout, je remélange ça avec l'algorithme SHA-1 et une clé publique (que j'imagine comme un nom d’utilisateur).
Le GUID, la clé publique et privée ne sont que des options qui peuvent être désactivées mais qui servent à verrouiller une clé sur  un utilisateur,  un logiciel ou un ordinateur.

Le tout est fonctionnel, mais j'ai encore pas mal d'idées que je pourrais intégrer, comme un numéro de version, ou des dates (comme les anti-virus), ainsi que les tirets xxx-xxxx-xxxx
Voilà, n'hésitez pas pour les idées ou commentaires :)

j'ai essayé de commenter le tout au maximum pour que vous puissiez vous y retrouver
Merci à tous :)  
Stéphane







 Conclusion

Essayez le, et dites moi ce que vous en pensez :) ce que je peux améliorer ou refaire

Je suis en première année de CSharp et y'a tellement à faire avec que je pense déjà à d'autres sources.
Encore merci à tous

PS: Je ne suis ni cryptographe ni mathématicien, je ne pense pas que mes clés soient infaillible ou blindée, et qu'une simple erreur de calcul pourrait tout mettre en échec, néanmoins avant de vous donner ça en pâture, je l'ai testé avec un autre soft de ma conception et je n'ai rien pus mettre en évidence de dangereux. Je serais ravi d'avoir votre avis sur cette question

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) CRYPTOGRAPHIE DE RÉPERTOIRE (AES 256) par Vallorbain
Source avec Zip Source .NET (Dotnet) COPIE DE CLÉ USB AUTOMATIQUE par pigedanslelac
Source avec Zip Source avec une capture Source .NET (Dotnet) CRYPTOGRAPHY par DanMor498
Source .NET (Dotnet) MSA CRYPTAGE NON REVERSIBLE PAR MATRICE SEMI-ALÉATOIRE par yohan49
Source avec une capture Source .NET (Dotnet) CPRB CRIPTAGE PAR POSITION ALÉATOIRE DE CLOCK par yohan49

Commentaires et avis

Commentaire de jantosze le 12/05/2009 17:51:24

salut,

Déjà cela fonctionne , par contre  qq remarques de formes:
- faire une classe type outil qui permettrait de séparer les méthodes du formulaire d'interface, des méthodes utilitaires et faciliter la création d'une dll pour reuse par exemple.
- le remplissage du tableau MyValueKey a titre perso et pour lisibilité du mainteneur j'aurai préféré une liste initialiser dans un foreach par une fonction de calcul basé sur le rang dans la liste (MyValueKey[n-4]*MyValueKey[n-4]*MyValuekey[n-3]+NbQ[...)
cdt, JAN

Commentaire de stalmar le 13/05/2009 02:05:36

salut Jantosze

Merci d'avoir pris le temps de parcourir mon code ,
Effectivement pour le remplissage, la liste de mes MyValueKey[x] est assez affreuse, j'ai effectivement pensé y mettre une boucle mais j'avais des problèmes avec certains calculs qui me retournaient que 3 ou 4 caractères différents suivant les positions dans la clé. Je quand même essayer, sans ça c'est difficile de générer des clés de taille différentes donc...

Par contre pour la classe type outil, je ne vois pas vraiment ce que tu veux dire ? Je créer une classe avec seulement le Genkey et les autres dans une classe outils (makekey, changeGUID, etc...) ou c'est les fonctions de la form que je déplace dans une classe outils ?

Autre petit point que j'essaye de concevoir, c'est l'histoire des dates, mais je peine déjà rien qu'a la conception. je sais pas comment ajouter une date à ma clé et pouvoir la récupérer ensuite, surtout si je fais des passes MD5 dessus :S si quelqu'un à une idée, je suis preneur.

merci et @++

Commentaire de jantosze le 14/05/2009 08:17:47

Salut Stalmar,

Concernant MyValyeKey c'est un tableau qui se remplit par calcul donc il y a un algo que tu utilise  a mettre en œuvre.
Le point des classes il s'agit d'un problème de choix de langages et des conséquences sur l'architecture logique. Ton travail cadre très bine avec une réalisation cpp, par contre tu as choisi c# donc un langage fortement typé. Les conséquences sont diverses et ce choix s'appuie sur une spécification de ton architecture et en amont des objectifs fonctionnelles. Ainsi la classe que tu as réalisé est "une boite à outils" dont Form1 montre l'usage. Mais moi simple développeur/user j'ai pas besoin d'une boite à outil, il me faut des objets fonctionnels dans un composant. Par exemple après avoir créé un objet key, je suis capable de le comparer avec un autre objet key qui a été initialisé par une string soit if( key1 == key2 ) {..} sans plus de tracasserie... Donc, à mon avis, si tu souhaite finaliser ton travail c# tu dois reprendre( ou finaliser) ta conception fonctionnelle (pense fonctions et non réalisation) .
Ta dernière remarque n'est pas du codage mais touche la conception de ta solution, càd tes algos...

Dans l'attente de l'intégration de la variable temporelle, bon courage, JAN

Commentaire de stalmar le 15/05/2009 10:45:21

D'accord, je voir ce que tu veux dire, effectivement c'est une idée que je n'ai pas pensé. pour certains points il me manque encore une ou deux connaissances mais je vais m'efforcer d'apprendre ça. l'idéal serait donc d'avoir immédiatement accès au clés "Key MyKey = new Key(cléprivée)" au lieu de "GenerateurCle X = new GenerateurCle(); et ensuite X.GenKey();" si j'ai bien compris.

Je vais reprendre tout ça ce week-end pour l'améliorer et je rajouterai la mise à jour :)
encore merci pour tes conseils Jan
A bientôt

Commentaire de jantosze le 15/05/2009 18:19:50

Par exemple, ta classe d'interface en capsule la classe outil, pour cela penses bien aux aspects fonctionnelles de la classe d'interface ( en matière d'échange de l'information ou aux process), cela doit déboucher sur une conception objet qui se traduira par la classe avec les méthodes, attributs et éléments (théoriquement cette classe d'interface doit cacher la complexité de la boite a outil).

Pour cette histoire de date, ton codage de clé ressemble à une fonction discrète sous la forme d'un polynôme, si cette hypothèse est juste tu pourrais crypter la date pour l'obtenir sous la forme d'un polynôme puis réaliser un produit de convolution entre les 2 polynôme ( la fonction inverse étant un opérateur de dé convolution) tu peux donc récupérer le polynôme de la date puis retrouver la date (principe typiquement appliquer dans le traitement du signal). C'est peut être une piste à creuser...
@+JAN

Commentaire de joscelyni le 16/05/2009 06:07:04

j'aimerais bien que quelqun mexplique comment le faire marcher parce que la sa marche pas alors merci d'avance

Commentaire de stalmar le 17/05/2009 14:24:23

Effectivement , je vais creuser ça, j'avais pensé rajouter des caractères de codage de ma date c'est un peu pareil apparemment.

A joscelyni, salut, peux tu me dire ce qui ne fonctionne pas ? tu as un message d'erreur ? les clés générées ne sont pas valable ? il te manque peut-être le framework .net ?

Merci à tous

Commentaire de stevie77 le 26/07/2009 21:10:20

je trouve pa le fichier .exe

Commentaire de GTAwinner le 26/10/2009 20:22:22

J'ai pas compris comment ouvrir le logiciel

Commentaire de stalmar le 26/10/2009 23:46:16

Hello,

Effectivement l'.exe ne figure pas dans les fichiers. Pour le créer il suffit d'ouvrir le fichier KeyGen.sln avec Visual Studio 2008 et de cliquer sur compiler. Le fichier exe sera généré dans Bin\Debug\Keygen.exe

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,196 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales