Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

20 commentaire(s) de Bel0 sur des sources sur tout CodeS-SourceS

Le : 23/03/2009 18:12:00
Source : GRAPHE ORIENTÉ ET DIJKSTRA
30 commentaires et 7 liés à la source (sans compter mes messages). Il serait temps de commenter ce qui est posté (merci à ceux qui se sont intéressés à cette source d'ailleurs !).

Pour les autres qui cherchent à récupérer le projet réseau afin de l'inclure directement dans leur travail actuel, vous ne l'aurez pas. Je suis fatigué de gens qui essaye de "grater une source qui fera l'affaire". Je ne travaille pas pour vous. Tous commentaires ou messages privés demandant les sources du projet réseau seront ignorés.


Le : 14/09/2007 16:50:06
Source : [C / WIN32] RATLIB - CRYPTER FACILEMENT EN RC4, AES ET TEA
1° Fonction FixFile
Etant donnée que tu utilises des fonctions de chiffrement fonctionnant par bloc, tu dois faire en sorte que la taille du bloc du cipher et la taille du fichier correspondent, ce que tu as bien fait. En anglais, on dit qu'on rajoute du "padding". Dans ton cas, tu rajoutes uniquement des zéros à la fin du fichier. Ce n'est pas vraiment la meilleur façon de procéder. Il y a des "standards" de padding (cfr: http://en.wikipedia.org/wiki/Padding_%28cryptography%29).

2° Dans FixFile, tu rajoutes le padding "in place" dans le fichier et ensuite tu le retires ... un peu barbare non ? :) Pourquoi ne pas le faire dans le buffer mémoire au lieu d'aller modifier le fichier, encrypter, enlever les mods dans le fichier.

3° DecryptFile (toutes)
Etant donné que tu ajoutes du padding au moment de l'encryption, tu vas avoir des données superflues au moment de la décryption. Tu DOIS les enlever pour reconstituer le fichier original.

4° Tu utilises les blocks ciphers en mode ECB, tu ferais mieux d'utiliser le mode CBC qui "dissimule" mieux les données. Une bonne illustration du pourquoi et une explication sur les autres modes est donnée à l'adresse suivante: http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29

5° Mot de passe -> Clé
Pour générer la clé à partir du mot de passe, il y a aussi des standards à utiliser de préférence ! (notamment PKCS5 défini dans le RFC2898 (http://tools.ietf.org/html/rfc2898)).

6° Signature de fichier (Le plus gros problème)
Le but d'une signature est de prouver l'authenticité du message. Je banalise un peu la chose ...

Premièrement, on effectue un hash des données (ce que tu fais) et ensuite on signe le hash.

Le problème avec ce que tu as fait est le suivant. Si un attaquant modifie le fichier que tu as "signé", il doit aussi modifié le hash qui se trouve au début du fichier ... ce qui ne lui pose *AUCUN* problème étant donné que la fonction de hash est connue. Il est donc impossible de voir si qqn a modifié le fichier.

Par contre en signant le hash (avec ta clé privée en utilisant RSA en mode signature, clé privée que tu es le seul a possédé), n'importe qui peut vérifier si le hash a été modifié (en utilisant ta clé publique que tout le monde peut avoir).

Si ce que j'ai dit n'était pas clair (et c'est sans doute le cas :|), je te conseille de consulter (http://en.wikipedia.org/wiki/Digital_signature).

---

Je crois que j'ai fait le tour des plus gros défauts (cryptographiques) du programme. Le code en soit est correct et la séparation des différentes fonctions est plutôt bonne. Rien à redire de ce coté.

Créer des programmes qui utilisent correctement la cryptographie n'est pas quelque chose d'évident à faire. Si un jour, tu dois en utiliser dans tes programmes de façon "plus professionnel", je te conseille d'utiliser la librairie OpenSSL.


Le : 13/09/2007 13:26:52
Source : JOURNAL INTIME
Tu devrais essayer de structurer ton code d'une meilleur façon. Le code dans les fichiers C et les définitions dans les fichiers headers.

Tu devrais aussi essayer de construire une petite interface graphique. Des programmes utilisant la ligne de commande sont difficilement utilisable à moins d'être très bien fait.

Encore une chose pour l'"encryption". Inverser tous les bits des données (0 si 1 et 1 si 0) ne constitue pas vraiment une encryption ... au mieux on peut appeler ça de l'encodage. Le chiffrement devrait se faire avec des algorithmes standards du genre AES, 3DES (et encore il ne faut pas faire d'erreur dans l'implémentation si tu veux que ça soit vraiment sure).

Désolé d'être si négatif, mais beaucoup de choses sont à revoir dans cette source.


Le : 11/09/2007 16:53:18
Source : GENÉRATION D'UN CODE VHDL (FILTRE NUMÉRIQUE)
C'est le langage utilisé pour programmer des PIC ou des FPGA (minicpu embarqué si tu veux).


Le : 28/06/2007 11:16:47
Source : SERVEUR HTTP
Wooow, quelqu'un qui a lu ma source ! Je commençais à désespérer après plus d'un an. Merci pour le commentaire :)

Euhh, C++. En effet, c'est une idée mais 1) je suis loin de maitriser le langage 2) la syntaxe utilisée me laisse assez froid !

Donc, j'émule un code objet en C (utilisation de structure qui représente l'objet)


Le : 02/05/2007 18:33:38
Source : TABLE DE HACHAGE - ANSI C
Je pensais par exemple à un paramètre à la création de la hashtable.

PS: on ne voit presque pas tes origines orientées objet :P


Le : 01/05/2007 20:31:54
Source : TABLE DE HACHAGE - ANSI C
2 petites remarques:
1) J'ai vu dans ton code que tu vérifiais que ton nombre de free était égale au nombre de malloc. C'est un début pour trouver des fuites mémoires. Toutefois, si tu travailles sous linux, il vaut mieux utiliser un outil beaucoup plus affûté, j'ai nommé *Valgrind* :)
2) Pour la réallocation de la hastable, tu devrais fournir un paramètre qui permet de définir à partir de quel moment, on doit réallouer. Je m'explique. Les fonctions de hachage n'étant pas parfait, il se peut que certains cases de ton tableau contiennent des collisions (plusieurs couples (clé,valeur)) alors que d'autre sont vides. C'est dû au fait que la fonction de hachage ne répartit pas les clés de manières uniformes sur l'ensemble du tableau. Il est donc courant de définir un taux d'occupation du tableau (50%-80%) au delà duquel on force la réallocation de la hashtable.

Sinon c'est plutot propre comme implémentation. J'aime bien ce style "pseudo orienté object" en C :)


Le : 14/01/2007 13:37:59
Source : IMPLEMENTATION DE QUELQUES ALGORITHMES POUR LA RÉSOLUTION DU JEU SUDOKU
Ayant lu ton code, je me permet de faire quelques commentaires:

- tu devrais plus vérifier la java doc (ou utiliser un éditeur te montrant les erreurs .. genre eclipse) pour vérifier que les méthodes que tu utilises ne sont pas obsolète (deprecated) (ex: size() -> getSize()).
- Tu utilises des threads dans ton programme et tu utilises aussi la méthode stop (qui est deprecated elle aussi). Ce n'est vraiment pas une bonne façon de faire les choses étant donné que quand tu appelles cette méthode, elle stop le thread mais dans état inconnu, ce qui crée forcement de l'inconsistance dans l'état de ton programme (deadlock, race & co).
- Le troisième point me semble peut-être le plus embêtant étant donné qu'il traduit un manque de compréhension de langage Java. Quand un attribut d'une classe est déclaré en static, il faut y accéder de la manière suivante: <Nom de la classe>.<Nom attribut> (ex: Sudoku.soduko et non pas app.suduko, idem pour Jeu et jeu.getJeu)
- Tu devrais aussi essayer des mieux encapsuler tes données. C'est une mauvaise pratique d'accéder aux attributs des autres classes directement. On préfère utilisé des accesseurs. Ca devient utile quand on les surcharge dans des sous-classes. Si tu n'utilisais pas les accesseurs (comme dans ton cas), tu devrais changer partout dans ton code où tu utilises l'attribut pour pointer vers l'attribut de la sous-classe.
- La dernière remarque est peut être moins importante pour toi pour l'instant mais c'est toujours bon de s'en souvenir pour la suite. Quand tu créés une application graphique, il vaut toujours mieux essayer de séparer la partie graphique de la partie donnée (le modèle) et la façon de gérer les données (controller). Il existe un pattern en programmation appellée MVC (Model View Controller) très utile pour les applications graphiques. Tu devrais y jeter un coup d'oeil une fois que tu en as fini avec toutes les remarques.

Ne le prends pas mal si je te fais toute ces remarques, c'est pour ton bien :P En gros, tu as commis à peu près toutes les erreurs du débutant (ca n'est pas grave, on est tous passé par là un jour ou l'autre ;))

Sur ce bon courage pour toutes les corrections.


Le : 08/01/2007 19:29:49
Source : NETTOYEUR DE LIGNES DE CODES PRISES SUR CODES-SOURCES.COM
D'un autre coté quand on utilise vim: Ctrl+V, selectionner le bloc, d .. hopla c'est nettoyé ! Mais bon qui connait vim :/


Le : 15/10/2006 15:42:26
Source : NOMBRES PREMIERS - ERATOSTHENE QUASI ILLIMITÉ
Petite correction sur la fonction mathématique "pi".

Ce n'est pas pi(n) mais phi(n) et elle renvoit les nombres premiers à n et inférieur à n et pas les nombres premiers !



1 2


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.