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
Bonjour,


Je suis à la recherche de la représentation mathématique de l'algorithme de "Feistel", une représentation sous forme Java ou C peut être utile aussi. Merci de me m'aider a comprendre le principe et tout ce qui pourra m'aider a représenter l'algorithme de "Feistel" en un programme Java.
J'ai besoin de votre aide, et je vous remercie d'avance.

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
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):

/* 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

3
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
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?
0
@M-Killer

Bonjour,
Je veux les deux si c'est possible.
merci M-Killer
0
Envoyez le sur mon Mail SVP M-Killer.
Bonne soiré j'attends votre réponse. Merci
0