Lupuz.de: Artikel-Portal / Magazin

Zurück   Postpla.net - die Forum Community > PC, Internet und Technik > Coder's Area

Java Programm Entschlüsselung mit bekanntem Schlüssel

Anzeigen:

Antwort
 
Themen-Optionen
Wollito
Alt 23.01.2008, 21:31   #1
Standard Java Programm Entschlüsselung mit bekanntem Schlüssel

Hallo liebe PP Gemeinde,

folgendes Problem : Ich suche ein kleines Java Programm, mit dessen Hilfe ich einen Text entschlüsseln kann, bei dem mir der Schlüssel bekannt ist.
Sozusagen ein Programm mit einem Eingabe Fenster für den gesamten verschlüsselten Text sowie Eingabefenstern für alle Buchstaben des deutschen Alphabets (ausgenommen Sonderzeichen, Satzzeichen sowie ä,ü,ö) + Leerzeichen (ist in meinem Text mitverschlüsselt).

Dann drücke ich nur noch nen Knopf und er entschlüsselt mir den Text


Wäre so etwas einfach zu lösen ? Habe den Text nämlich manuell entschlüsselt und würde nun gerne den gesamten Text entschlüsseln nur ist der nicht grad klein. Ein Programm wäre eine enorme Hilfe und - wenn variabel durch Schlüsseleingabe - auch für zukünftige Verschlüsselte Aufgaben zu nutzen.
 
 
Nach oben
OrionX
Alt 23.01.2008, 21:36   #2
Standard

wie ist das teil denn verschlüsselt? irgendwas bekanntes als algorithmus? oder irgendwas blah mäßiges wie atbash?
 
 
Nach oben
Sidolin
Alt 23.01.2008, 22:16   #3
Standard

Ich tippe mal auf Caesar bzw. rot13 oder sowas. Und das sollte ja wohl jeder in Java hinbringen.
 
 
Nach oben
Wollito
Alt 23.01.2008, 22:21   #4
Standard

Puh keine Ahnung
Also auf jeden Fall handelt es sich um eine monoalphabetische Verschlüsselung bei der ein Zeichen im verschlüsselten Text immer dem gleichen Klartextbuchstaben zuzuordnen ist.

Hier die entschlüsselten Buchstaben

A = H
B = N
C = I
D = S
E = Leerzeichen
F = Y
G = O
H = A
I = W
J = U
K = G
L = B
M = V
N = Q
O = Z
P = J
Q = K
R = L
S = D
T = E
U = C
V = M
W = T
X = X
Y = P
Z = R
- = F

Ist der Einstieg in Kryptographie im Informatik Kurs in 12. Wir haben nur den verschlüsselten Text bekommen und es wurde gesagt, entschlüsselt ihn !
Von daher sehen meine Kenntnisse was Java / Kryptographie sinnvoll verbinden angeht noch sehr dürftig aus.

EDIT:

Nein, nach Aussage unseres Lehrers handelt es sich nicht um eine einfache Cäsar oder Rot13 Verschlüsselung, aber das wird nach den ersten Versuchen auch klar.
 
 
Nach oben
Sidolin
Alt 24.01.2008, 00:32   #5
Standard

Öhm, wenn du im Info Kurs bist solltest du sowas einfaches eigentlich hinkriegen...
Mit Kryptographie hat das auch nicht soo viel zu tun, das ist einfach nur Buchstaben vertauschen.
 
 
Nach oben
OrionX
Alt 24.01.2008, 05:55   #6
Standard

dachte mir doch das es sowas atbashmäßiges ist .

gibts irgendwas wie str_replace in java? wenn ja wäre das die schnellste methode.

Code:
for(int i; i <= 27; i++) {
str_replace(alphabet[i], kryptoalphabet[i], text);
}
vorrausgesetzt java kennt so eine funktion.

Mit Kryptographie hat das auch nicht soo viel zu tun, das ist einfach nur Buchstaben vertauschen.
würde ich nicht sagen, wie gesagt das ist eine art atbash methode welches eine antike verschlüsselungstechnik darstellt. heute ist das natürlich nicht mehr wirklich wirksam, aber als einstieg in das thema ist das ok.
 
 
Nach oben
El Sparko
Alt 24.01.2008, 16:19   #7
Standard

ich muss zugeben meine erste händische implementierung von rsa ist der einfachheit auch so vorgegangen... man nennt das dann halt wohl stromchiffre, weil jedes zeichen einzeln verschlüsselt wird (bei mir halt über rsa und nicht vertauschung). besser wär wohl blockchiffre.

trägt aber hier nicht groß dazu bei. oris lösung denk ich führt schon auf den richtigen weg. problem ist, dass wollito eher ein programm zum klicken haben will.

sag wollito hast du mit java schon mal ein fenster mit nem button oder sowas erstellt? da kommen mir begriffe wie awt und eventhandler in den sinn...

einfacher fänd ich du schreibst den ausgangstext in ne textdatei. öffnest diese in java übern filehandle und liest von dem stream (wenn java sowas hat) immer genau ein character ein. den haust du dann an ne funktion "decode(char c)", welche du natürlich selber schreiben musst. die funktion wiederum schaut nach was c in deinem zielalphabet entspricht und returned das wieder als char. mit nem zweiten filehandle machst ne neue datei auf und schreibst das neue zeichen dort wieder rein.

ich komm halt aus der c/c++-ecke. da macht man sowas gern mit streams vorallem weil man dann selber wenig umwandeln muss. ist aber absolut inperformant, weil man kein buffering etc. verwendet. würdest du die gesamte eingangsdatei erst in ein array einlesen und so wie bei orion verfahren wärs wesentlich performanter.
 
 
Nach oben
OrionX
Alt 24.01.2008, 20:12   #8
Standard

mir fällt aber grad auf: wenn zb w im alphabet drankommt aber ein vorheriger buchstabe schon durch ein w ersetzt wurde dann wird meine vorgehensweise den text nochmal verwirren.

scheiss gegenalphabete.

also auf anfang:

Code:
for(i = 0; i <= textlaenge; i++) {
    for(x = 0; x <= 27; x++) {
         if(string[i] == alphabet[x]) {
              string[i] = kryptoalphabet[x];
         }
    }
}
so hakt er zeichen für zeichen ab. ich hoffe auch in java kann man strings wie arrays durchlaufen.

ich glaube das ist jetzt nicht mehr so schnell.
 
 
Nach oben
Wollito
Alt 24.01.2008, 21:15   #9
Standard

Danke für die schnellen Antworten erstmal.

@ El Sparko
Jupp, habe damals mit Eclipse gearbeitet (IF Kurs in 11) und wir haben da dann einfache Programme wie Taschenrechner etc. programmiert und da es in Eclipse relativ einfach ist eine grafische Bedien Oberfläche zu erzeugen, werd ichs damit auch angehen.

@ OrionX
Gute Idee !
Hab auch in die Richtung gedacht, denn sonst würde ja das Problem mit der "Falschverschlüsselung" passieren. Werds morgen mal angehen und schauen was passiert. Habs zwischendurch auch mit Excel probiert, aber da reichen meine Kenntnisse für Excel Befehle noch nicht aus.
 
 
Nach oben
Squdus
Alt 25.01.2008, 08:14   #10
Standard

Was willst denn da mit Excel machen?
Jeden Buchstaben in eine eigene Zelle tippen?

Was man allerdings machen könnte, wenn man denn der Sprache Basic mächtig ist. Es mit Word und VBA machen. Wobei ich jetzt allerdings keinen konkreten Code vor Augen habe, sondern einfach mal vermute das es damit auch realisierbar ist.
 
 
Nach oben
Sidolin
Alt 25.01.2008, 13:47   #11
Standard

Gegen das Problem von Orion würd ein einfaches continue; sobald der Buchstabe ersetzt wurde helfen.
 
 
Nach oben
OrionX
Alt 25.01.2008, 18:24   #12
Standard

nein, eigentlich nicht. das problem ist ja das im normalen alphabet zb A durch W ersetzt wird. bei meiner methode werden dann alle A's durch W's ersetzt. aber wenn die schleife wirklich bei W angekommen ist, wird sie nicht wissen das manche w's im text früher mal a's waren und trotzdem ersetzen.

meine schleife mit str_replace würde nach einem continue
einfach mit B weitermachen, und das tut sie ja sowieso (ich bezieh mich auf den ersten post, du auf den zweiten?)
 
 
Nach oben
Sidolin
Alt 25.01.2008, 18:43   #13
Standard

Zitat von OrionX
nein, eigentlich nicht. das problem ist ja das im normalen alphabet zb A durch W ersetzt wird. bei meiner methode werden dann alle A's durch W's ersetzt. aber wenn die schleife wirklich bei W angekommen ist, wird sie nicht wissen das manche w's im text früher mal a's waren und trotzdem ersetzen.

meine schleife mit str_replace würde nach einem continue
einfach mit B weitermachen, und das tut sie ja sowieso (ich bezieh mich auf den ersten post, du auf den zweiten?)
Ja, quoten wär wohl besser gewesen
 
 
Nach oben
gagget
Alt 02.02.2008, 14:46   #14
Standard

Also die PHP Funktion str_replace akzeptiert auch Arrays als Übergabewerte. Somit sollte sich die for Schleife und das damit verbundene Problem schonmal in Luft auflösen.

Um das ganze performant ablaufen zulassen sollte man meiner Meinung nach , in PHP ,C++ oder Java, die Daten in Blöcken einer definierten Größe, z.b. 1024 kB, einlesen. Dann den Text Block umwandeln, und wieder in einen Ausgangsstream/Datei schreiben.

Ansonsten frisst die eine Methode nämlich den RAM und die andere die CPU.

Gruß Gagget
 
 
Nach oben
Wollito
Alt 11.02.2008, 11:21   #15
Standard

Hallo

also ich habe jetzt ein Programm geschrieben, das einen Text einfach Cäsar Ver- und Entschlüsselt und das Ganze mit Variablem Cäsar Wert der sich über ein Textfeld eingeben lässt.

Gibts hier irgend eine Möglichkeit, Text Passagen so zu schreiben das man sie nicht öffentlich lesen kann ?

Suche nämlich nach einer Java Methode, die den verschlüsselten Text in seiner Reihenfolge logisch verändert.

Wenn ich hier alles reinschreibe, lesen meine bösen Informatik Kollegen mit und erschummeln sich die Note, deshalb hier nur wenig Info ^^*

PS: Ihr wisst wer gemeint ist ! ; )
 
 
Nach oben
Wodar Hospur
Alt 11.02.2008, 15:29   #16
Standard

Nein, eine derartige Möglichkeit ist mir nicht bekannt, vorallem da sich ja deine Kollegen hier auch anmelden könnten....
Allerdings kannst du ja einfach nur mit einem Beispielstring anfangen und deinen bisherigen Erfolg mit dem Verändern zeigen.
 
 
Nach oben
Ähnliche Themen, die dich vielleicht interessieren
Thema Autor Forum Antworten Letzter Beitrag
Fremder Schlüssel passt in meinem Auto! Sili Drive In 16 13.02.2008 02:55
JAVA für Mozilla Firefox ??? wo und wie??? Sonic Betriebssysteme und Software 10 15.07.2005 10:53
Backup Programm! Bjoern Betriebssysteme und Software 0 06.02.2003 19:36
Anzeigen:
Antwort

Themen-Optionen



Alle Zeitangaben in WEZ +2. Es ist jetzt 09:45 Uhr.


Lupuz.de - wir können auch anders!
©1998 - 2008, Lupuz:Information-Network
Powered by vBulletin Version 3.7.1 (Deutsch), Jelsoft Enterprises Ltd.
Grüne Links?

SEO by vBSEO 3.1.0 ©2007, Crawlability, Inc.