1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
void main(){
// Les variables
int p = 3 ; //nombre premiers
int q = 47 ; //nombre premiers
int n = p*q ;
int f = (p-1)*(q-1) ;
int e = 79; //calculer avec Theoreme de Bezout
int c = 0;
int d = -1;
while(c != 1) {
d = d + 1 ;
c = (e*d)%f;
}
// les 2 clés
**println("La clé publique est (" + e +"," + n +")");
**println("La clé privée est (" + d +"," + n +")");
//la chaine en encrypter
String codenucleaire = "isn";
// la chaine en ASCII ???
int codeAscii = codenucleaire.hashCode(); *
println("ASCII : " + codeAscii);
String codestring = String.valueOf(codeAscii);
String nstring = String.valueOf(n);
println("N : " + nstring);
println("La chaine ASCII fait: " + codestring.length() + " caractères.");
println("La chaine N fait: " + nstring.length() + " caractères.");
//FAIRE L'ENCRYPTAGE (Decouper la chaine en n-1 , ex: si n fait 3 caractere
// decouper tout les 2 caractere XX XX XX XX , de ce cas n fait 3 caracteres.
String s1 = codestring.substring(0, nstring.length()-1);
println("Premiere paires: " + s1 );
String s2 = codestring.substring(nstring.length()-1, (nstring.length()-1)*2);
println("Deuxieme paires: " + s2 );
String s3 = codestring.substring((nstring.length()-1)*2, (nstring.length()-1)*3);
println("Deuxieme paires: " + s3 );
int num1= Integer.parseInt(s1);
int num2= Integer.parseInt(s2);
int num3= Integer.parseInt(s3);
//encrypter la partie decouper^e modulo n
int num1mix = (int) (Math.pow(num1, e)%n);
int num2mix = (int) (Math.pow(num2, e)%n);
int num3mix = (int) (Math.pow(num3, e)%n);
// la chaine encrypter
System.out.println(num1mix + "" + num2mix + "" + num3mix);
} |