Hi Leute,
in meinem Code weist mich der Compiler die ganze Zeit darauf hin, das eine Variable noch nicht initialisiert wäre. Jedoch sobald ich die Initialisierung schreibe, sagt er mir, das sie bereits existiere, ich es also lassen solle.
Besonders die letzte for-Schleife und die darauf folgende if-Schleife ist relevant.
Es geht um die Variable zahl5, welche in der for-Schleife erst deklariert wird.
in meinem Code weist mich der Compiler die ganze Zeit darauf hin, das eine Variable noch nicht initialisiert wäre. Jedoch sobald ich die Initialisierung schreibe, sagt er mir, das sie bereits existiere, ich es also lassen solle.
Java:
import java.lang.Math.*;
public class RSA1{
int prim1,prim2,mod,d,y,i,high,low,e,x; //Deklaration der Variablen
public static void main (String [] arguments){
int prim1,prim2,mod,d,y,i,high,low,e,n,x;
boolean truth;
String text;
high = 13; // Man gibt die Obergrenze an
low = 3; // Man gibt die Untergrenze an
e = (int) (Math.random()*(high - low) + low);
System.out.println ("Gib eine Primzahl an"); //Aufforderung eine Primzahl anzugeben
int p = Kon.readInt ();
System.out.println ("Gib eine weitere Primzahl an");
int q = Kon.readInt();
for(x=2;x<p;x++){ // x=2 Startwert; x<p Endwert; x++ Schrittweite
truth = (p%x==0); // prüfen ob es teilbar ist, wenn der Rest 0 ist
if (truth==true){
x=p; }
if (truth==true) {
System.out.println("Die Zahl ist keine Primzahl.");
System.out.println("END");
System.exit(0);
}
else{
//System.out.println("Die Zahl ist eine Primzahl.");
}
}
//System.out.println("Die Zahl ist eine Primzahl.");
for(x=2;x<q;x++){ // x=2 Startwert; x<p Endwert; x++ Schrittweite
truth = (q%x==0); // prüfen ob es teilbar ist, wenn der Rest 0 ist
if (truth==true){
x=q; }
if (truth==true) {
System.out.println("Die Zahl ist keine Primzahl.");
System.out.println("ENDE");
System.exit(0);
}
else{
//System.out.println("Die Zahl ist eine Primzahl.");
}
}
n = p*q; //Berechnung von N
int phi = (p-1)*(q-1); //Berechnung von Phi
System.out.println("Bitte warten sie!"); //Ausgabe von Phi
mod=0;
for(d=2;mod!=1;d++){
i=e*d ; // Formel für das Produkt von d*e
mod = i%phi;
if (mod==1) { //Wenn i mod phi gleich 1 ergibt, werden 'd' und 'e' ausgegeben
System.out.println ("Der private Schlüssel ist: " + d); //Ausgabe der Schlüssel
System.out.println ("Der öffentliche Schlüssel ist: (" + e + ";" + n + ")");
}
}
System.out.println("Bitte geben sie den zu verschlüsselnden Text an");
char [] c;
String t=new String(Kon.readString());
c=t.toCharArray();
long m = c[0];
double zahl5;
System.out.println("Bitte geben sie 'e' an!");
e = Kon.readInt();
System.out.println("Bitte geben sie 'n' an!");
n = Kon.readInt();
double ergebnis;
for (i=0;i<c.length;i++) {
m= c[i];
ergebnis = Math.pow(m,e);
//System.out.print(ergebnis);
//ergebnis1 = (int) ergebnis;
zahl5 = ergebnis % n;
System.out.println(zahl5);
} // end of for
System.out.println("Falls du den Text wieder entschlüsseln möchtest, drücke die '1'; Um zu beenden, drücke die '2'");
char aa = Kon.readChar();
if (aa=='1') {
System.out.println("Bitte gib den privaten Schlüssel d an!");
int xx = Kon.readInt();
System.out.println("Bitte gib nun den öffentlichen Schlüssel N an!");
int yy = Kon.readInt();
double ergebnis4 = Math.pow(zahl5, xx);
int ergebnis5 = (int) ergebnis4;
int mm = ergebnis5 % yy;
String str = "" + i;
System.out.print("Der entschlüsselte Text lautet:" +mm);
} else if(aa=='2'){
System.out.println("ENDE");
System.exit(0);
} // end of if-else
}
}
Besonders die letzte for-Schleife und die darauf folgende if-Schleife ist relevant.
Es geht um die Variable zahl5, welche in der for-Schleife erst deklariert wird.
Zuletzt bearbeitet: