# Programm Vigenere Verfahren



## TeamBob (18. Jan 2007)

Hi
Also ich muss ein Programm programmieren in Java und folgene Aufgabenstellung ist gegeben....
Könnte mir da jemand den Quelltext zu programmieren oder sagen wo ich sowas runteraden kann, 
weil ich habe nicht als zu viel ahnung davon und brauche das unbedingt und für die leute die ein wenig 
ahnugn davon haben ist das doch bestimmt kein probelm für euch oder?`
Danke schonmal in vorraus.....

1.verschlüsslung eines textest8ohne längenbegrenzung) mit einen Schlüssel mit der Maximalen 
Länge von 26 mit dem Vigenere Verfahren.

2.Eintschlüsselung eines Geheimtextes nach Vigenere Verfahren mit einem bekannten Schlüssel.

3.Entschlüsselung eines geheimtextes nach Vigenere Verfahren mit einen unbekannten 
Schlüssel, aber bekannter Schlüssellänge mit einer maximalen Schlüssellänge von 26.

4.Entschlüsselung eines geheimtextes nach Vigenere Verfahren mit einen unbekannten 
Schlüssel mit hulfe der Kasiki- oder Friedman Textest.

5.Nutzerfreundliche Oberfläche zur Bedienung.

Beachten
-Reinfolge unbedingt einhalten
- möglichkeit um klar- und Geheimtexte is das Projekt zu laden bzw. speichern
- ein menü
-eingeschränkter zeichensatz von 65-90 im AscII zeichensatz


----------



## SnooP (18. Jan 2007)

ja super... welch Einsatz - ich bin begeistert.

1. Wir machen keine Hausaufgaben!

2. Wenn du kein Plan hast... - Google wirst du bestimmt bedienen können - das Ding gibts in hundertfacher Ausführung... - zwar vermutlich nicht auf anhieb mit Kasiski-Verfahren oder Friedman-Tests - aber - man wird so einiges zusammenbappen können...

3. Warum musst du ein Java-Programm programmieren, wenn du es nicht selbst lernen willst?


----------



## TeamBob (19. Jan 2007)

ist ja nicht so das ich es nicht probiert habe...
Also die lehrerin geht davon aus das wir es können 
obwohl wir es noch nie hatten....
Also ich habe schon gegoogelt bevor ich hier
geschrieben hatte und probiert habe ich 
auch schon aber irgendwie habe ich kein anhaltspunkt.
Wenn es sowas im net gibt könnt ihr denn nicht 
bitte was raussuchen und es zusammenschreiben,
weil nur so lerne ich was wenn ich auch sehe 
wie es geschrieben wurde...ist
ja nicht so das ich es dann einfach abgebe...
ich werde mir das mal anschauen und probieren
es zu verstehe und dann nochmal neu programmieren
bitte


----------



## Guest (19. Jan 2007)

TeamBob hat gesagt.:
			
		

> Also die lehrerin geht davon aus das wir es können
> obwohl wir es noch nie hatten....



Das steht auf der Hit-Liste ganz oben. Wie kann ein Lehrer etwas verlangen, ohne es vorher auch erklährt zu haben?  :noe:


----------



## SnooP (19. Jan 2007)

Sorry... aber das was du schreibst ist absoluter Blödsinn.

Das mag zwar vielleicht ne Taktik sein, die in der Schule okay ist... bzw. gerne angewendet wird - aber du kannst doch nicht im Ernst erwarten, dass sich jemand anderer die Mühe macht, dir mal eben was zusammenzuschrauben... selbst wenn es nicht soo wahnsinnig schwierig ist - trotzdem dauert das ganze seine Zeit... - alleine das ganze Tippen 

Und das mit dem Verstehen und Nachvollziehen hab ich schon so oft gehört, dass es mir zum Hals raushängt... so lernt man das Programmieren nunmal nicht...

und es kann ja nicht sein, dass ihr null Java-Programmierung hattet... so das es absolut keine Möglichkeit gibt für euch die Aufgabe zu lösen... oder ist das Problem nicht das Java sondern der Vigenere? ... das Verfahren ist ja nun alleine bei der Wikipedia hinreichend erklärt...

also nen bisschen mehr solltest du dich schon anstrengen.


----------



## Jango (19. Jan 2007)

Ups - "Gast" war ich. Gar nicht bemerkt   
SnooP -  :toll:


----------



## TeamBob (19. Jan 2007)

hallo
also ich habe mich dazu schon lange belesen und weiss wie es funktioniert, 
aber das ist ja nicht der knackpunkt, sondern das ic´h nicht weiss
wie ich es programmieren soll...wenn es so viel im net gitbt...
könntet ihr mir dann sagen wo es sowas gibt
und
du hattest doch gesagt das es nicht so schwer ist und nicht so 
viel zeit in anspruch nimmt....aber so lange kann es doch nicht
dauern oder??
Bitte


----------



## byte (19. Jan 2007)

Ne so lange dauerts nicht. Fang am besten gleich an, dann biste Mitternacht fertig.


----------



## M.L. (20. Jan 2007)

Also einen kleinen Verweis auf google.de @ +java +vigenere +gui wird man wohl tätigen können ;-)
Ein gut aussehendes Beispiel könnte man z.B. hier finden: http://www.getfreesofts.com/script/743/2748/JaVi_Java_Vigenere.html
(auch wenn sich ein selbst erarbeitetes Programm besser macht als etwas aus dem Internet Kopiertes...)


----------



## TeamBob (20. Jan 2007)

hi
Also habe mich mal hingestzt und wollte mal fragen ob das so ok ist...
hab ich damit alle punkte einbegriffen oder was vergessen....das mit den beschränlten Ascii Zeichensatz weiss ich nicht


hier ist eine vigenere ver und entschlüsselung

```
void ver() {
int i=0;

buffer1 = VerEnt.getSelectedCheckbox();
ausfuehren = buffer1.getLabel(); 

while (i<L0) {
ch=s.charAt(i);

if (ausfuehren == "verschluesseln")
{
keychar = key.charAt(i % keylength);
y = (int)keychar;
x=(int)ch-65;
x=x+(y-65);
x= x % 26;
Text.append((char) (x+65));
i = i+1;
}
else {
keychar = key.charAt(i % keylength);
y = (int)keychar;
x=(int)ch-65;
x= x % 26;
x=x-(y-65);
Text.append((char) (x+65));
i = i+1;
}
}
}
```


dieses hier liesst eine ganze datei ein und gibt es in einer anderen aus


```
import java.io.*;
public class vigenere
{public static void main (String[] args) throws IOException
{
if (args.length != 2) {
System.err.println("So musst Du aufrufen: java vigenere dateiname schluessel");
System.exit(1);
} 
String klardateiname = args[0], kryptdateiname = "crypt"+klardateiname, key = args[1]; 
int z = 0, i=0, s=0, keylength;
char ch = 65;
File klardatei = new File(klardateiname), kryptdatei = new File(kryptdateiname);
FileReader leser = new FileReader (klardatei);
FileWriter schreiber = new FileWriter (kryptdatei);

key = key.toLowerCase(); 
keylength = key.length();
while (z != -1)
{ z= leser.read(); 
if (z > 96 & z < 123) {
ch = key.charAt( i % keylength);
s = ((int) ch) - 97;
s = s % 26;
schreiber.write((z-97+s)%26+65);
i++;
} 
}
leser.close(); schreiber.close();
}
}
```




und dieses hier knackt die verschlüsselung


```
import java.io.*; 
import java.lang.Math;
public class vigenereent
{public static void main (String[] args) throws IOException
{
if (args.length != 1) {
System.err.println("So musst Du aufrufen: java vigenereent dateiname");
System.exit(1);
} 
String klardateiname = args[0], code; 
int z=0, t=0, codelength, y=0, m=0, anzahl=0, schluessellaenge = 0;
float anteil = 0, max=0;
char p = 65, wzeichen = 65;
File klardatei = new File(klardateiname);
FileReader leser = new FileReader (klardatei);
StringBuffer text = new StringBuffer();
int statistik[] = new int [100];

/* Schluessellaenge herausfinden */

while (z != -1)
{ 
z= leser.read();
text.append((char) z);
}
code = text.toString();
code = code.toLowerCase();
codelength = code.length();
t = 0;
while (max<=12){
anzahl = 0;
t++;
y=0; 
for (int b=0; b 96 && m < 123) { 
m = (m-97)%26;
statistik[m]++;
anzahl++;
}
y = y+t;

}

for (int b=0; b<=25; b++) {
anteil = (statistik[b] * 100) / anzahl; 
if (anteil > max) {
max = anteil;
}
}
}
schluessellaenge = t;
System.out.println("Schluessellaenge: "+schluessellaenge);

/* Entschlüsselung */

for (int c=0; c 96 && m < 123) {
m = (m-97)%26;
statistik[m]++;
anzahl++; 
}
y = y + schluessellaenge;
}
for (int b=0; b<=25; b++) {
anteil = (statistik[b] * 100) / anzahl;
if (anteil > max) {
max = anteil;
if (max > 12) {
wzeichen = (char) (b+61);
System.out.print(wzeichen);
}
}
}
}



/* Engschlüsselung Ende */

leser.close(); 
}

}
```

_[Edit by Beni: Codetags eingefügt]_


----------



## TeamBob (22. Jan 2007)

kann mir bitte einer helfen das hiermit schluss ist
danke


----------



## Leroy42 (22. Jan 2007)

TeamBob hat gesagt.:
			
		

> kann mir bitte einer helfen das hiermit schluss ist
> danke



Wie wir sehen, hast du dir doch Mühe gegeben. Allerdings mußt du
einsehen, daß wir ohne Einarbeitung in dieses Vignere (oder wie auch immer) Verfahren,
kaum, (für dich zuverlässig), eine Beurteilung abgeben können, ob deine Lösung
auch korrekt ist.

Dies soll jetzt keinen _Angriff_ auf dich darstellen, sondern es ist
lediglich eine Vermutung, warum dir,_ in diesem speziellen Fall_, 
keiner antwortet.


----------



## Jockel (22. Jan 2007)

Du weißt schon, dass Plagiatismus generell nicht gern gesehen wird, oder?
Außerdem hast du geschrieben: "weil nur so lerne ich was wenn ich auch sehe wie es geschrieben wurde". Das müsste doch heißen, du könntest jetzt den Code von Markus beurteilen (http://cojobo.bonn.de/~m_schori/index.php?content=java13_04).

Mehr sage ich dazu erst einmal nicht...


----------



## TeamBob (22. Jan 2007)

hi
Also ich muss sagen das ich den Quelltext nicht von der Seite habe, sondern ich habe
einen gefragt und er hat gesagt er hilft mir programmieren....
Also müsste das stimmt....
Nur mal ne frage an sich
Wie beschränke ich den ASCII Zeichensatz von 65 bis 90
Danke


----------



## Smie (29. Jan 2007)

Ist ja interessant @TeamBob.. zufällig muss ich die gleiche aufgabe auch bearbeiten.. habe auch gestöbert und noch in nem anderen FOrum das gleiche palawer von dir gefunden.
/////// Zu meinem Problem ////
Hab mich mal selbst hingesetzt und was zusammenprogrammiert. Logo dass das dann nicht so wirklich funzt. Sieht jemand auf anhib einen Fehler?
Auszug aus der Klasse auf die ich mittels meines buttons "verschlüsseln" zugreife

public String vigenere1(String klartext, String schluessel){
    String geheimtext = "";
    //Laenge von Schlüssel und Klartext angleichen
  if (schluessel.length()< klartext.length()){
          schluessel = schluessel + schluessel;
    }
    //Klartext verschlüsseln
        for(int i=0; i<klartext.length(); i++){
            char buchstabe = (char)((int)klartext.charAt(i) +    (int)schluessel.charAt(i)-25);
            if((int) buchstabe > 90){
              buchstabe = (char) ((int) buchstabe-26);
            }
           geheimtext = geheimtext + buchstabe;
    }
    return geheimtext;
  }

Ich hoffe jemand hat ne idee


----------

