Cryptography:Algorithme de Feistel en JAVA \C
Fermé
Luca
-
Modifié par Luca le 30/04/2012 à 00:08
m-killer Messages postés 21 Date d'inscription mercredi 20 avril 2011 Statut Membre Dernière intervention 1 mai 2012 - 1 mai 2012 à 02:18
m-killer Messages postés 21 Date d'inscription mercredi 20 avril 2011 Statut Membre Dernière intervention 1 mai 2012 - 1 mai 2012 à 02:18
4 réponses
m-killer
Messages postés
21
Date d'inscription
mercredi 20 avril 2011
Statut
Membre
Dernière intervention
1 mai 2012
4
1 mai 2012 à 02:18
1 mai 2012 à 02:18
Dsl mais je préfere le mettre sur CCM pour que tout le monde puisse en profiter (rien de plus chiant que de tomber sur des topic sans réponse lorsque l'on fait des recherches)
Voila le code (il peut bugguer, je l'ai fait ce soir et je ne l'ai pas verifier):
Voila le code (il peut bugguer, je l'ai fait ce soir et je ne l'ai pas verifier):
/* Ce code est l'implémentation de l'algorithme de Feistel en C * Ce code n'est évidemment pas adapté pour faire un cryptage 100% fiable, entre autre a cause de l'horrible bijection que j'ai improvisée * Mais il est parfait pour etre utiliser a des fins éducatives * * Ecrit par M-killer à l'intention de Luca * * Ce code est en deux parties : la déclaration des fonctions de l'algorithme et les variables a déclarée dans la fonction main avant d'utiliser l'algorithme * Le cryptage s'effectue avec la fonction multitour(). Le parametre tours indique le nombre de tour (par exemple pour 16 le DES) * * Des schémas expliquant le fonctionnement de l'algorithme sont disponible sur internet : * http://www.bibmath.net/crypto/moderne/feistel.php3 * */ //Déclaration des fonctions char f(char caractere){ //f est une bijection aléatoire ou pseudo-aléatoire // (définition de bijection sur wikipédia =P ) return (char) ( 7*((int) caractere ) + 3 ) % 256 //cette formule est vraiment une bijection pourrie pour faire un cryptage // correct mais tu peux la changer } void simpletour(char* iarray, char* oarray, int size){ int cpt = 0; while(cpt<size){ oarray[2*cpt] = iarray[2*cpt+1]; oarray[2*cpt+1] = iarray[2*cpt] ^ f(iarray[2*cpt+1]); //le symbole ^ est le symbole de l'opération logique XOR en c cpt++; } } //la chaine de caractère finale se situe dans la chaine oarray void multitour(char* iarray, char* oarray, int size, int nbtours){ char* temp; while(nbtours > 0){ simpletour(iarray, oarray, size); temp = iarray; iarray = oarray; oarray = temp; nbtours--; } } //la chaine de caractère final se situe dans la chaine iarray //Variables a déclarer dans la fonction main() int size; //moitié de la taille de la chaine de caractère d'entrée char iarray[2n]; //chaine de caractère d'entrée char oarray[2n]; //chaine de caractère de résultat //Exemple d'utilisation (DES) : multitour(iarray, oarray, size, 16); //La chaine iarray contient maintenant une chaine cryptée
m-killer
Messages postés
21
Date d'inscription
mercredi 20 avril 2011
Statut
Membre
Dernière intervention
1 mai 2012
4
30 avril 2012 à 01:24
30 avril 2012 à 01:24
Bonjour,
Je ne suis pas sur d'avoir compris ce que tu desire :
tu veu une implementation de l'algo en java/C ou tu veux une jolie animation qui illustre son fonctionnement?
Je ne suis pas sur d'avoir compris ce que tu desire :
tu veu une implementation de l'algo en java/C ou tu veux une jolie animation qui illustre son fonctionnement?