CRYPTOGRAPHIE DES EN LIGNE DE COMMANDE

ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 - 20 janv. 2013 à 23:18
 EtherOS - 22 janv. 2013 à 20:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/54904-cryptographie-des-en-ligne-de-commande

je vais modifier le copyright que j'ai mis .Merci encore de vos corrections
Merci pour la correction.
=>les fonctions Initialize et Destroy alloue et detruit respectivement l'espace aux objets à utiliser
=> j'ai condensé ce code comme cela juste pour faciliter la copie et la compilation d'un invité
=> la fonction puissance machine est moins efficace que la fonction puissance redefini (pw est de complexité log2(n))
=> concernant la programmation modulaire je l'ai fait(Crypto.h,function.h,etc...) mais j'ai aussi fait un non modulaire pour l'utilisateur(CryptoProject.c) pour qu'il puisse compiler directement
=> pour le cast n'est -il pas faisable en C ? pourquoi dit-on seulement en C++
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
22 janv. 2013 à 17:10
24h est passé: aucun retour. La source sera donc désactivé jusqu'à réaction du/des auteur(s) de la source.
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
21 janv. 2013 à 11:10
Bonjour.

Je rajouterais à tous les arguments précédents (très pertinents):
- Le help qui consiste en plusieurs printf, alors qu'un seul et unique printf suffirait !
- Les fonctions à rallonge (une fonction qui dépasse 50 lignes est très souvent signe de mauvaise conception).
- Les "casts" avant les malloc, qui me font dire qu'un compilateur C++ a été utilisé (au lieu d'un compilateur C). En C, pas besoin de caster avant un malloc. Je rappelle que ce sont deux langages différents et que certains codes réagissent différement si on utilise un compilateur C ou C++.
- Quand on créer un outil de cryptographie et que l'on se veut crédible, on parle de chiffrement/déchiffrement et non de crypter/décrypter (qui montre l'on ne sait pas faire la différence entre, chiffrer, déchiffrer et décrypter, et que l'on ne sait pas non plus que crypter n'existe pas).
- Les "#define A 10" ! On peut directement utilisé 0xA (cela fait partie du langage qui gère, décimal, octal et hexadécimal).
- BooltoInt n'a aucun sens, cela fait aussi partie du langage (transformation implicite d'un int en bool et inversement).
- Les defines __XOR et __toInt sont très discutables (utilité ?).
- Il y a des define identiques dans plusieurs fichiers !?
- Enfin, des fonctions de cryptographie qui ne gèrent pas la réentrance, c'est n'est pas très pratique ! Impossible donc de chiffrer ou déchiffrer plusieurs fichiers en parallèle (dans le cas d'une application multithreadé, puisque les fonctions sont à états).

Enfin, le "copyright" est inacceptable (sur le principe, légalement il ne vaut rien. Niveau crédibilité, je vous invite à ne pas en mettre.). Soit vous acceptez de partagez le code, soit vous ne le partagez pas.
Je vous laisse donc 24h pour faire votre choix (retirer le "copyright" ou retirer la source de ce site).

>> genre l'absence de déclaration des fonctions, obligeant à les implémenter dans l'ordre pour éviter une erreur de compilation
En revanche, ceci n'est pas une erreur. Les fonctions privées sont rarement pré-déclarées, et les mettre dans un certain ordre n'est pas une inélégance, bien au contraire.
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
21 janv. 2013 à 00:06
Salut,

ATTENTION : grosse fuite de mémoire dans les fonctions qui utilisent :

Initialise(quelquechose); // malloc
return quelquechose; // FIN DE LA FONCTION !!
destroy(quelquechose); // free

comme par exemple : MainCalculOfLiAndRi ou MainCalculInverseOfLiAndRi ou Destroy
ou toutes les autres d'ailleurs...

idem pour la fermeture des fichiers: ReadDataInFile()
open(file);
return;
close(file); // ??? jamais fermé

bye
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
20 janv. 2013 à 23:18
Je me suis arrêté à la "licence", enfin presque.
Un copyright est obtenu après des démarches officielles dont certaines payantes. Prétendre en avoir un est illégal.
Mettre deux lignes expliquant les droits qu'on à dans le paragraphe "GARANTIE" n'a aucune valeur légale. Et je ne compte même pas les fautes de frappe/orthographe/grammaire ou même de sens.
En revanche, menacer de poursuite sans base légale, je ne suis pas bien sur que ce soit autorisé, et pour un code qui se prétend libre c'est un peu violent comme démarche.
Sans compter que des vrais licences, connues, reconnues, etc... existent, par genre la CC-NC qui correspondrait a peu de chose près a votre charabia.

Sinon, côté code, j'ai vu 2/3 trucs en scrollant vers la zone de commentaire... genre l'absence de déclaration des fonctions, obligeant à les implémenter dans l'ordre pour éviter une erreur de compilation, l'absence totale de commentaire *utiles*, des variables globales dans tous les sens, des bloques de nombres sortis d'on ne sait où, ou encore la réinvention fréquente de la roue (sérieusement, ré-écrire ["http://www.cplusplus.com/reference/cmath/pow/ pow] en moins bien, y'en avait besoin ?)
Rejoignez-nous