CRYPT-O-MATIC "DARKCHOCOLATE"

Signaler
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
-
Messages postés
20
Date d'inscription
vendredi 23 septembre 2005
Statut
Membre
Dernière intervention
10 juin 2010
-
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/50731-crypt-o-matic-darkchocolate

Messages postés
20
Date d'inscription
vendredi 23 septembre 2005
Statut
Membre
Dernière intervention
10 juin 2010

Moi je mets 10, c'est original de créer 'sa' méthode de chiffrement !
Messages postés
21
Date d'inscription
samedi 1 août 2009
Statut
Membre
Dernière intervention
20 mai 2011

J'aurai aimé que le site permette de classer différemment C et C++. Mon code est en C.

The lrand48() and nrand48() functions return values of type long in the range [0, 2**31-1]. The high-order (31) bits of r(n+1) are loaded into the lower bits of the returned value, with the topmost (sign) bit set to zero.

-----> dixit sous Unix cmd: man lrand48.

Il n'y a en fait *normalement* pas de problème de valeur négative avec lrand48. Si cependant cela se produit, se serai très mal pour la suite du programme. La fonction bePlus ne mange pas beaucoup de pain, et on sait jamais. Il est bon de ssavoir que les fonctions "pseudo ramdomisés" se répètes si elle sont réinitialisée a l'identique, ce qui est -un avantage si on a besoin de répété la même séquence (décrypter) -un inconvénient car cela les rends prévisibles.

Je vais schématiser le déroulement du programme: la clé fournie l'est sur une simple interprétation de time(), parceque le calendrier ne boucle pas trop souvent. Un même fichier, codé a 1 seconde d'intervale, donne un cryptage different. Il faut noter la clé pour pouvoir décrypter le fichier. Si on utilise une mauvaise clé dans lors du décryptage, le fichier est crypté est recrypté sur la nouvelle clé (et là bon courage...).
Le programme est prévu pour des fichiers textes. Chaque "signe" du fichier est crypté (pas seulement les lettres) sur l'éventail des fonctions de codage. Elles utilisent toutes des fonctions standards "pseudo randomisés", qui, pour être moins prévisibles, sont utilisées avec d'autres variables, comme la clé de cryptage, la valeur du caractère considéré, sa place relative dans le fichier.

Je l'ai testé sous Mac OSx (sans problème, cela devrai fonctionner aussi sous Linux) et sous windows Vista (il faut faire une légère adaptation du code pour que le programme lise le fichier jusqu'à la fin).

Toutes questions, remarques, critiques sont les bienvenues!
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
1) Attention, ta méthode de sélection "d'algorithme" n'est peut-être pas tout à fait aléatoire. En effet, en prenant la valeur absolue du résultat, tu donnes (peut-être) des chances supplémentaires à certains nombres. Par exemple, si on définit un générateur pseudo-aléatoire entre -2 et 4 tel que tu l'utilises, alors on peut tirer les nombres 0 (1/6 probabilité), 1 (1/3 probabilité), 2 (1/3 probabilité), 3(1/6), et 4(1/6). Si tu veux utiliser la valeur absolue, il faut que le générateur ait des limites de même distance de zéro (exemple -2 et 2, 8 et -8 ...) (c'est pour ça que je dis "peut-être", car je ne sais pas si en C++ et tel que tu l'appelles dans ton code, c'est le cas).

2) Je ne suis pas sûr qu'un tel algorithme soit utile en pratique (même pour un usage perso), pour une raison principale : une méthode de chiffrement doit être déterministe. Dans ton cas, il faut clairement distinguer la génération de la clef "aléatoire" de la routine de chiffrement, et plutôt de proposer à l'utilisateur de proposer une clef qu'il a choisie lui-même (une même clef donne un même chiffrement pour une même donnée). Dans ton cas, je ne suis pas trop sûr de comprendre (je ne pratique pas le C++), mais il semblerait que tu tires des clefs aléatoires pour l'encodage ET pour le décodage. En gros, en appellant à la suite tes deux fonctions, on pourrait encrypter avec la clef "12" et décrypter avec la clef "3384" ... à moins que la clef "générée" ne modifie pas l'algorithme (mais quel intérêt alors), je ne comprends pas trop ces pratiques ...

Cordialement, Bacterius !