Un pò di crittografia in Java non fa mai male!!

Programmazione con la JVM.

Moderator: Falcon

Un pò di crittografia in Java non fa mai male!!

Postby Falcon on Sat Jun 30, 2007 9:26 am

Welà raga...posto qui alcuni sorgenti di classi che realizzano un pò di codice crittografato
Cifrario di Cesare
Code: Select all
/*
* Cesare.java
*/
package cripto;
import java.io.*;
/**
* @author FightingFalcon
*/
public class Cesare {
    private String Msg;
    private String Codifica;
    private int Scostamento;
    private String line;
    private String Alpha="abcdefghijklmnopqrstuvwxyz";
    BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
    public Cesare() {
       Msg="";
       Codifica="";
       Scostamento=0;
    }
    public void Acquisisci(){
        try{
            do{
              System.out.println("Inserisci il messaggio:");
              line=input.readLine();
              Msg=(line);
              if(Msg.length()==0)System.out.println("Errore lunghezza messaggio");
            }while(Msg.length()==0);
            do{
              System.out.println("Inserisci lo scostamento");
              line=input.readLine();
              Scostamento=Integer.parseInt(line);
              if((Scostamento>26))System.out.println("Errore lunghezza messaggio");
            }while(Scostamento>26);
            Msg=Msg.toLowerCase();
        }catch(Exception e){
            System.out.println("Errore d'acquisizione "+e);
        }
    }
    public String Codifica(){
        int I=0;
        int Ind=0;
        char c;
        while(I<Msg.length()){
           c=Msg.charAt(I);
           Ind=Alpha.indexOf(c);
           Ind=Ind+Scostamento;
           if(Ind>25)Ind=Ind-25;
           Codifica=Codifica+Alpha.charAt(Ind);
           I++;
           Ind=0;
        }
        return Codifica;
    }
   
}


Cifrario di Vigenère
Code: Select all
/*
* Vigenère.java
*/

package cripto;
import java.io.*;
/**
* @author FightingFalcon
*/
public class Vigenère {
    private String Msg;
    private String Codifica;
    private String Verme;
    private String line;
    private String Alpha="abcdefghijklmnopqrstuvwxyz";
    BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
    public Vigenère() {
        Codifica="";
        Msg="";
        Verme="";
    }
    public void Acquisisci(){
        try{
        do{
           System.out.println("Inserisci il messaggio:");
            line=input.readLine();
            Msg=(line);
            if(Msg.length()==0)System.out.println("Errore lunghezza messaggio");
        }while(Msg.length()==0);
        do{
            System.out.println("Inserisci il verme:");
            line=input.readLine();
            Verme=(line);
            if(Verme.length()==0)System.out.println("Errore lunghezza verme");
        }while(Verme.length()==0);
        if(Verme.length()<Msg.length()){
              int I=0;
              while(Verme.length()<Msg.length()){
                             Verme=Verme+Verme.charAt(I);
                             I++;
              }
         }
        }catch(Exception e){
            System.out.println("Errore d'acquisizione "+e);
        }
    }
    public String Codifica(){
       int I,K,Ind;
       char c,s;
       if(Msg.length()==0){
           return "";
       }else{
           Msg=Msg.toLowerCase();
           Verme=Verme.toLowerCase();
           for(I=0;I<Msg.length();I++){
               Ind=0;
               c=Msg.charAt(I);
               if(c!=' '){
               Ind=Alpha.indexOf(c);
               switch(c){
                   case 'a':
                       Ind=1;
                       break;
                   case 'b':
                       Ind=2;
                       break;
                   case 'c':
                       Ind=3;
                       break;
                   case 'd':
                       Ind=4;
                       break;
                   case 'e':
                       Ind=5;
                       break;
                   case 'f':
                       Ind=6;
                       break;
                   case 'g':
                       Ind=7;
                       break;
                   case 'h':
                       Ind=8;
                       break;
                   case 'i':
                       Ind=9;
                       break;
                   case 'j':
                       Ind=10;
                       break;
                   case 'k':
                       Ind=11;
                       break;
                   case 'l':
                       Ind=12;
                       break;
                   case 'm':
                       Ind=13;
                       break;
                   case 'n':
                       Ind=14;
                       break;
                   case 'o':
                       Ind=15;
                       break;
                   case 'p':
                       Ind=16;
                       break;
                   case 'q':
                       Ind=17;
                       break;
                   case 'r':
                       Ind=18;
                       break;
                   case 's':
                       Ind=19;
                       break;
                   case 't':
                       Ind=20;
                       break;
                   case 'u':
                       Ind=21;
                       break;
                   case 'v':
                       Ind=22;
                       break;
                   case 'w':
                       Ind=23;
                       break;
                   case 'x':
                       Ind=24;
                       break;
                   case 'y':
                       Ind=25;
                       break;
                   case 'z':
                       Ind=26;
                       break;     
                   default:
                       break;
               }
               if(Ind>25)Ind=Ind-25;
               s=Alpha.charAt(Ind);
               Codifica=Codifica+s;
               }
           }
           return Codifica;
       }
    }
   
}


Codifica di Vernam
Code: Select all
/*
* Vernam.java
*/

package cripto;
import java.io.*;
/**
* @author FightingFalcon
*/
public class Vernam {
    private String Msg;
    private String Codifica;
    private String Chiave;
    private String line;
    private String Alpha="abcdefghijklmnopqrstuvwxyz";
    BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
    public Vernam() {
        Codifica="";
        Msg="";
        Chiave="";
    }
    public void Acquisisci(){
         try{
        do{
           System.out.println("Inserisci il messaggio:");
            line=input.readLine();
            Msg=(line);
            if(Msg.length()==0)System.out.println("Errore lunghezza messaggio");
        }while(Msg.length()==0);
        do{
            System.out.println("Inserisci la chiave:");
            line=input.readLine();
            Chiave=(line);
            if(Chiave.length()==0)System.out.println("Errore lunghezza della chiave");
        }while(Chiave.length()==0);
        if(Chiave.length()<Msg.length()){
              int I=0;
              while(Chiave.length()<Msg.length()){
                             Chiave=Chiave+Chiave.charAt(I);
                             I++;
              }
         }
        }catch(Exception e){
            System.out.println("Errore d'acquisizione "+e);
        }
    }
    public String Codifica(){
        int I,K,Ind;
       char c,s;
       if(Msg.length()==0){
           return "";
       }else{
           Msg=Msg.toLowerCase();
           Chiave=Chiave.toLowerCase();
           for(I=0;I<Msg.length();I++){
               Ind=0;
               c=Msg.charAt(I);
               if(c!=' '){
               Ind=Alpha.indexOf(c)+1;
               switch(c){
                   case 'a':
                       Ind=Ind+0;
                       break;
                   case 'b':
                       Ind=Ind+1;
                       break;
                   case 'c':
                       Ind=Ind+2;
                       break;
                   case 'd':
                       Ind=3;
                       break;
                   case 'e':
                       Ind=4;
                       break;
                   case 'f':
                       Ind=5;
                       break;
                   case 'g':
                       Ind=6;
                       break;
                   case 'h':
                       Ind=7;
                       break;
                   case 'i':
                       Ind=8;
                       break;
                   case 'j':
                       Ind=9;
                       break;
                   case 'k':
                       Ind=10;
                       break;
                   case 'l':
                       Ind=11;
                       break;
                   case 'm':
                       Ind=12;
                       break;
                   case 'n':
                       Ind=13;
                       break;
                   case 'o':
                       Ind=14;
                       break;
                   case 'p':
                       Ind=15;
                       break;
                   case 'q':
                       Ind=16;
                       break;
                   case 'r':
                       Ind=17;
                       break;
                   case 's':
                       Ind=18;
                       break;
                   case 't':
                       Ind=19;
                       break;
                   case 'u':
                       Ind=20;
                       break;
                   case 'v':
                       Ind=21;
                       break;
                   case 'w':
                       Ind=22;
                       break;
                   case 'x':
                       Ind=23;
                       break;
                   case 'y':
                       Ind=24;
                       break;
                   case 'z':
                       Ind=25;
                       break;     
                   default:
                       break;
               }
               if(Ind>=25)Ind=Ind-25;
               s=Alpha.charAt(Ind);
               Codifica=Codifica+s;
               }
           }
        return Codifica;
    }
    }
   
}

La più bella...Crittografia di Pollux(Si basa sul codice Morse e sui Numeri Random)
Code: Select all
/*
* Pollux.java
*/
package cripto;
import java.io.*;
import java.math.*;
import java.util.Random;
/**
* @author FightingFalcon
*/
public class Pollux {
    private String Msg;
    private String Codifica;
    private String line;
    private 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'};
    private String Morse[]={".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
    private int Punt[]=new int[3];
    private int Lin[]=new int [4];
    private char Spaz[]={'+'};
    BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
    public Pollux() {
        for(int I=0;I<3;I++){
            boolean trovato=false;
            double k=Math.random()*10;
            int a=(int)k;
            while(trovato==false){
                int z=0;
                while(z<=I && a!=Punt[z]){
                    z++;
                }
                if(z>I){
                    Punt[I]=a;
                    trovato=true;
                }
            }
        }
        for(int I=0;I<4;I++){
            int a=0;
            boolean trovato=false;
            while(trovato==false){
               double k=Math.random()*10;
               a=(int)k;
               int z=0;
               while(z<Punt.length && a!=Punt[z]){
                   z++;
               }
               if(z==Punt.length){
                    z=0;
                    while(z<=I && a!=Lin[z]){
                        z++;
                   }
                    if(z>I){
                   Lin[I]=a;
                   trovato=true;
                   }
               }
            }
        }
        for(int I=0;I<Lin.length;I++)System.out.println("Line "+Lin[I]);
        for(int I=0;I<Punt.length;I++)System.out.println("Punti "+Punt[I]);
        Msg="";
        Codifica="";
    }
    public void Acquisisci(){
        try{
            do{
              System.out.println("Inserisci il messaggio:");
              line=input.readLine();
              Msg=(line);
              if(Msg.length()==0)System.out.println("Errore lunghezza messaggio");
            }while(Msg.length()==0);
            Msg=Msg.toLowerCase();
        }catch(Exception e){
            System.out.println("Errore d'acquisizione "+e);
        }
    }
    public String Codifica(){
        int I=0;
        char c;
        int K=0;
        String Temp="";
        boolean trovato=false;
        while(Msg.length()>I){
            K=0;
            while(K<Alpha.length && Msg.charAt(I)!=Alpha[K]){
                K++;
            }
            if(K!=Alpha.length){
                Codifica=Codifica+" "+Morse[K];
            }
            I++;
        }
        I=0;
        while(Codifica.length()>I){
            c=Codifica.charAt(I);
            int a=0;
            double k;
            trovato=false;
            while(trovato==false){
                k=Math.random()*10;
                a=(int)k;
                if(a<Punt.length)trovato=true;
            }
            if(c=='.')Temp=Temp+Punt[a];
            while(trovato==false){
                k=Math.random()*10;
                a=(int)k;
                if(a<Lin.length)trovato=true;
            }
            if(c=='-')Temp=Temp+Lin[a];
            if(c==' ')Temp=Temp+Spaz[0];
            I++;
        }
        Codifica=Temp;
        return Codifica;
    }
   
}
Linux Slackware User
User avatar
Falcon
Java Programmer
 
Posts: 542
Joined: Sat Jul 08, 2006 8:38 am

Un pò di crittografia in Java non fa mai male!!

Sponsor

Sponsor


Re: Un pò di crittografia in Java non fa mai male!!

Postby k8 on Fri Jul 25, 2008 3:56 pm

Ehi falcon,
sto riguardando ora questi tuoi sorgenti.
Perchè non fai un archivio di ognuno e li posti su sorgenti.big-bug.net ?
Dobbiamo arricchire la sezione Java perchè è un po vuota.

Fammi sapere.
User avatar
k8
Admin
 
Posts: 2115
Joined: Tue Jun 06, 2006 4:00 pm


Return to Java

Who is online

Users browsing this forum: No registered users and 1 guest

cron