Cryptologie en réseau


  1. Notions d'échange sur un réseau.

2 ordinateurs du réseau Palissy sont reliés par câble Ethernet.

Pour échanger sur le réseau, il faut choisir un port de communication, par exemple: 8000 - 12345...

Nous devons créer un client et un serveur. Le message chiffré circulera de l'un à l'autre.

127.0.0.1 est une adresse IP local qui permet de créer le client et le serveur sur la même machine.

L'adresse du serveur prof est 127.17.244.43


Pour obtenir notre adresse IP il faut:


Ouvrir un document texte avec le bloc note et y insérer:

"ipconfig/all

pause"

l'enregistrer sous le nom "commande.cmd"

Quand on l’exécute l'adresse ip de notre PC correspond à Adresse IPV4 (172.17.244.201 par exemple)


Une autre méthode pour obtenir l'adresse IP.

Il faut aller ouvrir "Windows PowerShell" dans Menu démarrer>Accesoires>Windows PowerShell

Maintenant on peut taper ipconfig.


Voici le code du Client:

    

import processing.net.*;

Client c;
String input;
int data[];
int i =0;

String secret = "VIDE"; 

boolean coder = true;

int decal = 3;

PImage img;
PImage img1;
  Caesar message = new Caesar(3);
char ch;  
   
void setup() 
{
  size(450, 255);
   background(204);
  stroke(0);
  frameRate(10); // Slow it down a little
  // Connect to the server's IP address and port
  c = new Client(this, "172.17.244.43", 12345); // Replace with your server's IP and port
img = loadImage("cryptology.jpg");
  img1 = loadImage("cgenial3.jpg");
   fill(0);
  image(img,0,0,450,270);
   image(img1,350,0,100,50);
 text("Alphabet 1 = " + new String(message.texte_code), 20,80); 
     
   text("Alphabet 2 = " + new String(message.texte_clair),20,120); 


}

void draw() 
{

   if (keyPressed ==true){println ("true");
   secret = ""+key;
  
      
    secret = message.codage(secret); 
   
   
  text("Code",20,140);
   text(secret,20 +i,160);
    ch= secret.charAt(0); 
    println(ch);
   c.write(ch);
    secret = message.decodage(secret); 
    text(secret,20 + i,220);
  text("Message secret",20,200);
  fill(0);
   text ("Methode de César à compléter",20,20);
   

i=i+20;
}
  // Receive data from server
  if (c.available() > 0) {
    input = c.readString();
   
    text(input,i,100);
   i=i+20;
  }
}

public class Caesar { 
  //Déclaration d'une nouvelle classe appelée Caesar
  char[] alpha = {
    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
  }; //Déclaration de la variable alpha et affectation à la variable alpha des valeurs 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
  protected char[] texte_code = new char[26]; 
  //Affectation de la variable texte_code à de nouvelles valeurs
  protected char[] texte_clair = new char[26]; 
  //Affectation de la variable texte_clair à de nouvelles valeurs
  Caesar(Integer decalage) { 
    //Déclaration de la valeur decalage
    for (int i=0; i < 26; i++) texte_code[i] = alpha[(i + decalage) % 26]; 
    for (int i=0; i < 26; i++) texte_clair[texte_code[i] - 'A'] = alpha[i];
  } //Déclaration de boucles for
  String codage(String secret) { 
  
    char[] message =secret.toCharArray(); 
    for (int i=0; i < message.length; i++) if (Character.isUpperCase(message[i])) message[i] = texte_code[message[i] - 'A']; 
    return new String(message);
  } //Affectation de la variable message à secret.toCharArray, puis boucle for, puis retour à la nouvelle variable message.
  String decodage(String secret) { 
    char[] message = secret.toCharArray(); 
    for (int i=0; i < message.length; i++) if (Character.isUpperCase(message[i])) message[i] = texte_clair[message[i] - 'A']; 
    return new String(message);
  } //Déclaration de la chaîne de caractères décodage, associée à la chaîne de caractère secret.Affectation de la variable message à secret.toCharArray, puis boucle for, puis retour à la nouvelle variable message.
   
}



Voici le code du serveur:



import processing.net.*;

Server s;
Client c;
String input;
int data[];
int i =0;

String secret = "VIDE"; 

boolean coder = true;

int decal = 3;

PImage img;
PImage img1;
  Caesar message = new Caesar(3);
char ch;  

void setup() 
{
  size(450, 255);
  background(204);
  stroke(0);
  frameRate(10); // Slow it down a little
  s = new Server(this, 12345); // Start a simple server on a port
img = loadImage("cryptology.jpg");
  img1 = loadImage("cgenial3.jpg");
   fill(0);
  image(img,0,0,450,270);
   image(img1,350,0,100,50);
 text("Alphabet 1 = " + new String(message.texte_code), 20,80); 
     
   text("Alphabet 2 = " + new String(message.texte_clair),20,120); 
textSize(20);
text("SERVEUR",200,40);
  textSize(12);
   text("Message décodé",20,180);
    text("Message codé",20,140);
   
}

void draw() 
{
  
  if (keyPressed ==true){println ("true");println(key);
s.write(key);
}
  // Receive data from client
  c = s.available();
  if (c != null) {
    input = c.readString();
   
    stroke(0);
   textSize(12);
  
   text(input,i,160);

   secret = message.decodage(input); 

   text(secret,i,200);
      i=i+20;
  }
}

public class Caesar { 
  //Déclaration d'une nouvelle classe appelée Caesar
  char[] alpha = {
    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
  }; //Déclaration de la variable alpha et affectation à la variable alpha des valeurs 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
  protected char[] texte_code = new char[26]; 
  //Affectation de la variable texte_code à de nouvelles valeurs
  protected char[] texte_clair = new char[26]; 
  //Affectation de la variable texte_clair à de nouvelles valeurs
  Caesar(Integer decalage) { 
    //Déclaration de la valeur decalage
    for (int i=0; i < 26; i++) texte_code[i] = alpha[(i + decalage) % 26]; 
    for (int i=0; i < 26; i++) texte_clair[texte_code[i] - 'A'] = alpha[i];
  } //Déclaration de boucles for
  String codage(String secret) { 
  
    char[] message =secret.toCharArray(); 
    for (int i=0; i < message.length; i++) if (Character.isUpperCase(message[i])) message[i] = texte_code[message[i] - 'A']; 
    return new String(message);
  } //Affectation de la variable message à secret.toCharArray, puis boucle for, puis retour à la nouvelle variable message.
  String decodage(String secret) { 
    char[] message = secret.toCharArray(); 
    for (int i=0; i < message.length; i++) if (Character.isUpperCase(message[i])) message[i] = texte_clair[message[i] - 'A']; 
    return new String(message);
  } //Déclaration de la chaîne de caractères décodage, associée à la chaîne de caractère secret.Affectation de la variable message à secret.toCharArray, puis boucle for, puis retour à la nouvelle variable message.
   
}



164 Boulevard de la Liberté, 47000 Agen, 47000 Agen
Optimisé par Webnode
Créez votre site web gratuitement ! Ce site internet a été réalisé avec Webnode. Créez le votre gratuitement aujourd'hui ! Commencer