Hallo,
ich bin 17 Jahre alt und überlege mir, Info zu studieren. An meiner Schule konnte ich aber kein Info in der Oberstufe nehmen und programmiere deswegen in meiner Freizeit ein bisschen.
Folgendes Problem: Ein Passwort (klein und Großbuchstaben und zahlen) mit bruteforce zu knacken. Ich habe es jetzt Mal bis zu einer länge von dem Passwort von 5 Buchstaben/zahlen programmiert. Für 5 braucht mein PC auch schon sehr lange.
Aber ich möchte gerne wissen, ob ich es nicht auch rekursiv programmieren kann, damit die Passwortlänge theoretisch unbegrenzt lange sein kann (auch wenn mir klar ist, dass es sehr lange dauern würde)
Könnt ihr mir da bitte Helfen? Viele Grüße
ich bin 17 Jahre alt und überlege mir, Info zu studieren. An meiner Schule konnte ich aber kein Info in der Oberstufe nehmen und programmiere deswegen in meiner Freizeit ein bisschen.
Folgendes Problem: Ein Passwort (klein und Großbuchstaben und zahlen) mit bruteforce zu knacken. Ich habe es jetzt Mal bis zu einer länge von dem Passwort von 5 Buchstaben/zahlen programmiert. Für 5 braucht mein PC auch schon sehr lange.
Aber ich möchte gerne wissen, ob ich es nicht auch rekursiv programmieren kann, damit die Passwortlänge theoretisch unbegrenzt lange sein kann (auch wenn mir klar ist, dass es sehr lange dauern würde)
Java:
public class Passwort
{
private String passwort;
private String werte[];
public Passwort(String passwort){
werte=new String[62];
setPasswort(passwort);
arrayFuellen();
}
public void setPasswort(String passwort){
this.passwort=passwort;
}
private boolean istGleichPasswort(String passwort){
return this.passwort.equals(passwort);
}
private void arrayFuellen(){
for(int i=0; i<10; i++){
werte[i]=Integer.toString(i);
}
for (int i=10; i<36; i++){
werte[i] = Character.toString((char)i+55);
}
for (int i=36; i<62; i++){
werte[i] = Character.toString((char)i+61);
}
}
public String suchePasswort(int stellen){
arrayFuellen();
String passwort;
for(int i=0; i<werte.length; i++){
passwort = werte[i];
System.out.println(passwort);
if(istGleichPasswort(passwort)){return passwort;}
}
for(int i=0; i<werte.length; i++){
passwort = werte[i];
for (int j=0; j<werte.length; j++){
passwort= passwort + werte [j];
System.out.println(passwort);
if(istGleichPasswort(passwort)){return passwort;}else{passwort = werte[i];}
}
}
for(int i=0; i<werte.length; i++){
passwort = werte[i];
for (int j=0; j<werte.length; j++){
passwort= werte[i] + werte [j];
for(int k=0; k<werte.length; k++){
passwort=passwort + werte[k];
System.out.println(passwort);
if(istGleichPasswort(passwort)){return passwort;}else{passwort = werte[i] + werte [j];}
}
}
}
for(int i=0; i<werte.length; i++){
passwort = werte[i];
for (int j=0; j<werte.length; j++){
passwort= werte[i] + werte [j];
for(int k=0; k<werte.length; k++){
passwort=werte[i] + werte[j] + werte[k];
for(int l =0; l<werte.length; l++){
passwort=passwort + werte[l];
System.out.println(passwort);
if(istGleichPasswort(passwort)){return passwort;}else{passwort = werte[i] + werte [j] + werte [k];}
}
}
}
}
for(int i=0; i<werte.length; i++){
passwort = werte[i];
for (int j=0; j<werte.length; j++){
passwort= werte[i] + werte [j];
for(int k=0; k<werte.length; k++){
passwort=werte[i] + werte[j] + werte[k];
for(int l =0; l<werte.length; l++){
passwort=werte[i]+ werte[j]+ werte[k]+werte[l];
for(int m=0; m<werte.length; m++){
passwort=passwort + werte[m];
System.out.println(passwort);
if(istGleichPasswort(passwort)){return passwort;}else{passwort = werte[i] + werte [j] + werte [k] + werte[l];}
}
}
}
}
}
return null;
}
}
Könnt ihr mir da bitte Helfen? Viele Grüße