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 !

PROGRAMME DE CRYPTAGE SIMPLE ( XOR / ROT )


Information sur la source

Description

Cliquez pour voir la capture en taille normale
Programme en C montrant l'utilisation du XOR et du ROT, et la combinaison des deux pour le cryptage de fichiers.

Ses methodes de codage sont peu fiables en terme de securité mais sont de bon cas d'école pour debuter la cryptographie.

Le C n'etant pas mon langague de prédilection c'est peu etre mal optimisé ! mais vos commentaires sont la pour çà ...
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de BruNews le 20/07/2005 10:49:49 administrateur CS

Salut,

on ne teste pas l'existence d'un fichier sur le fait de savoir si on peut l'ouvrir ou non, si un autre prog l'a ouvert avant en mode exclusif, ta fonction répond de manière totalement erronée.
if(0 > (long)GetFileAttributes(szfile)) ABSENT

Pour le reste, faut avouer qu'une boucle XOR présente peu d'intérêt.

ciao...

signaler à un administrateur
Commentaire de elguevel le 20/07/2005 11:23:03

cassé :-s

signaler à un administrateur
Commentaire de MuPuF le 20/07/2005 12:41:36

bah, il veut dire que apres tu dois continuer, c'est que le debut le XOR, moi je fais un xor de tout les chars puis je mélange des caracteres suivant la cléé puis je recommence encore une fois le mélange mais d'une autre maniere, le type qui trouvera comment j'ai fait méritera bien de lire des msg a la con ou meme des images pour un jeu, sachant que j'arrive a encoder 30 Mo/s de fichier, donc ça arrache..

signaler à un administrateur
Commentaire de elguevel le 20/07/2005 13:12:08

non mais je deconne en disant "cassé" car j'poste la source et j'ai une reponse 30 secondes après. (au moins les modo sont efficaces .. bravo)

Mais bon j'ai precisez dans les commentaires que j'etait pas très bon en C donc qu'il manquait d'"optimization" donc pour l'histoire de l'existance du fichier j'ai fait comme j'ai pu.

Et pour le XOR je dirai pas que çà sert a rien car comme je l'ai precisez, c'est un cas d'ecole pour les debutant .. et puis le but de ce site est d'apprendre et partager, non pas faire des programmes de fous pour en mettre plein les yeux :D

Mais je ne prend pas mal les critiques du tout, au contraire çà me fait avancer ;-)

Merci à tous.

signaler à un administrateur
Commentaire de AlexMAN le 20/07/2005 13:55:23

Moi je pense, qu'une optimisation possible, serait de traiter, non pas chaque caractere, mais plutot un groupe de 4 (4 char == 4 octets == 1 int) d'ou, au lieu de ta boucle, un truc du genre :

for (i = 0; i < dwSize; i += 4) {
  *((DWORD *)(szFile + i)) ^= CLE;
}

Tu reduis par 4 le nombre de passages dans ta boucle (qui est la principale lenteur de ton prog) donc c'est tout bénef :)
C'etait juste une petite remarque, il y a certainement BEAUCOUP mieux, mais c'est un truc qui m'est venu a l'esprit en voyant ta source.

Si tu as du mal avec la syntaxe utilisée, demande.

  

signaler à un administrateur
Commentaire de MuPuF le 20/07/2005 18:00:06

bah, la lenteur c'est le disque dur lol, le pross ne sera que tres peu solicité ici. Avec l'algo que j'avais créé (cf plus haut) le pross était utilisé a 10% c'est le disque qui rammait (entre guillemet quand meme car 30Mo/sec ...).

Le prob avec ton algo AlexMAN c'est qu'il faut que ton fichier soit un multiple de 4 ... donc tu dois faire des tests et corriger en cas d'erreur, quel bazars ! Mais sinon ça peux etre sympa, coder 4 char sur 1 integer, si un autre type trouve ça ben chapeau lol, rien que ça ça suffirait pour empecher 99.99999% de toutes les personnes qui essairaient de le lire.

signaler à un administrateur
Commentaire de BruNews le 20/07/2005 18:15:37 administrateur CS

on a dwsize, taille fichier.
DWORD *pbits, *pout;
pmem = (BYTE*) VirtualAlloc(0, dwsize, MEMDISPO, PAGE_READWRITE);
pbits = (DWORD*) pmem;
pout = pmem + dwsize;
while(pbits < pout) {
  *pbits ^= CLE;
  pbits++;
}

Ainsi la solution AlexMAN ne posera pas de problème car VirtualAlloc résulte toujours correctement aligné et multiple de 4, suffit de retamponner dwsize octets dans le fichuier.

signaler à un administrateur
Commentaire de elguevel le 21/07/2005 09:24:47

bon en ce moment je bosse donc j'ai pas trop le temps, mais dès que j'ai un moment j'me pencherai sur une solution de ce genre. On fera un programme correct :)

Sinon j'avais penssé à un codage aléatoire, ou chaque bloc (de 4 ou 8 par exemple) serai codé avec une clé aléatoire differente pour chaque bloc, et la clé serai a chaque fois ecrite avec la chaine crypter pour pouvoir le décrypter, bon çà multiplie la taille du fichier résultant mais bon...

signaler à un administrateur
Commentaire de ThreaT le 03/08/2005 19:00:30

MAIS WHAT THE FUCK !

MDR ! Alors comme ça on post ses PTI sur le web &#61514; petit filou vas ;)

J’étais en train de chercher des petites sources peinard pour mon nouvel élève, et sur quoi je tombe &#61514; excellent.

J’ai parcouru vite fais ton proj, c'est pas mal du tout :p
(Commentaires, code aéré, arguments espacés, interface tranquille,…)
Ce petit mois de cours n’aura pas été inutile.

J’espère que tu continues à t’acharner sur ton F7, et que tu n’as pas viré de bords en reprenant un langage obscur, pseudo compilé dont je tairais le nom.

Sinon j’ai sortie un ptit freeware si tu veux jeté un œil : http://entreprise.01net.com/windows/Utilitaire/reseau/fiches/32047.html

Passe à la maiz un de ces 4, je te montrerais les sources si tu veux tripper, ça peut te donner des idées.

Amuse toi bien, et passe de bonne vacance.
@+

signaler à un administrateur
Commentaire de elguevel le 10/08/2005 19:00:55

AH Na mais merde...

Mais qu'est ce que tu fou là :D moi qui penssais vraiment pas que tu t'inscrirai sur ce (genre de) site.

En tout cas cette source je te la dédie car c'est toi qui à fait tout le boulot en m'apprenant çà :-) J'en avait fait une PTI au debut de l'année et vu que çà allait finir à la poubelle, je l'ai posté ici pour qui veux apprendre.

Sinon en ce moment le C je tatte plus trop, je suis retourné un peu sous Delphi [www.delphifr.com] (obligé, pour cause de manque de Skill) et j'ai des trucs a faire pour la boite (en VB :s dsl).

La j'apprend Java, Admin. Oracle et la POO (quelle merde), car je vais en avoir besoin pour ma liscence.

Voila Voila, j'te recontacterai par mail à l'occase, et oui faut vraiment que je reprenne quelques cours :)

Sinon ton freeware, je l'avait déja pris y'a un moment (sur le site de ta boite) mais pas encore eut le temps de m'y penché, j'suis moins sur mon PC en ce moment. Mais j'y jetterai un coup d'oeil promis :) çà à l'air bien balaize :)

PS : Bravo tu as amélioré ton orthographe, ta pris des cours ?

@++

signaler à un administrateur
Commentaire de maladedede le 01/09/2006 02:41:30

Bonjour
C'est une bon code :)

Mais il y a quelque chose que je ne comprend pas trop dans le cryptage ROT je vois:
pFileBase[i] += PR_CLE;
pFileBase[i] c'est octect et un octect peut prendre 256 valeur décimal je crois :s
Alors je vois pas comment on peut ajouter a l'octet "pFileBase[i]" une valeur "int" qui peut largement dépasser 255 :s

A moins que lorsque l'octect arrive a la valeur 255+1 il se remet sur zero :/  Mais si c'est le cas ca veut dire qu'il n'y a que 256 clée possible et donc c'est vite cracké comme cryptage...

Expliquez-moi svp^^
Voila merci :)

signaler à un administrateur
Commentaire de spidermario le 07/12/2006 12:48:33

Ça vient peut être de moi mais pour la méthode -= ^= += je vois le même code pour le cryptage et le décryptage...

Dans ce cas à quoi sert ce if(bSens) ?

Ajouter un commentaire



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,421 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é.