Verschlüsselungsalgorithmus

Hey Leute,
ich muss für Info LK zu Mittwoch ein Verschlüsselungsalgorithmus für Java erstellen.
Da Problem ist, dass wir kein Caesar Schiffre machen sollen, weil wir das schon hatten und andere Verschlüsselungsverfahren kann ich leider net erstellen. Hab's net so mit Java :(
Wäre echt supi, wenn das jmd. hier posten könnte. Den ganzen Code + Benutzeroberfläche (Frame heißt das glaub ich^^). Also irgendein Verschlüsselungsalgorithmus wie Vignere oder so. Aber darf net ganz so kompliziert sein, da mein Tutor das sonst rafft.
(Ich erhalte für die Aufgabe meine letzten Punkte für dieses Semester)
THX im voraus
 
Google mal nach "TEA" wenn du vollgenden Code nicht nachvollziehen kannst: (Ist AHK)

Code:
/* 
AutoHotkey Version: 1.0.35+ 
Language:  English 
Platform:  Win2000/XP 
Author:    Laszlo Hars <www.Hars.US> 

Script to en/decrypt text files to text files 

Plus-minus Counter Mode: stream cipher using add/subtract with reduced range 
   (32...126). Characters outside remain unchanged (TAB, CR, LF, ...). 
   Lines will remain of the same length. If it leaks information, pad! 

The underlying cipher is TEA, the Tiny Encryption Algorithm 
http://www.simonshepherd.supanet.com/tea.htm It is one of the fastest and most 
efficient cryptographic algorithms. It was developed by David Wheeler and Roger 
Needham at the Computer Laboratory of Cambridge University. It is a Feistel 
cipher, which uses operations from mixed (orthogonal) algebraic groups - XOR, 
ADD and SHIFT in this case. It encrypts 64 data bits at a time using a 128-bit 
key. It seems highly resistant to differential cryptanalysis, and achieves 
complete diffusion (where a one bit difference in the plaintext will cause 
approximately 32 bit differences in the ciphertext) after only six rounds. 

As a test, the script reads its source file and saves the ciphertext with 
   extension .enc to the same directory. 
If it exists, the decrypted file is saved with extension .dec instead 

Version:   1.0  2005.07.08  First created 
*/ 

SetBatchLines -1 
StringCaseSense Off 
AutoTrim Off 

k1 := 0x11111111                 ; 128-bit secret key 
k2 := 0x22222222 
k3 := 0x33333333                 ; choose wisely! 
k4 := 0x44444444 
k5 := 0x12345678                 ; starting counter value 

StringTrimRight ScriptFile, A_ScriptFullPath, 4 
EncFile = %ScriptFile%.enc       ; EncFile = {script-name}.enc 
DecFile = %ScriptFile%.dec       ; DecFile = {script-name}.dec 

IfExist %EncFile% 
   GoSub DECRYPT 
Else 
   GoSub ENCRYPT 
ExitApp 

ENCRYPT: 
   i = 9                         ; pad-index, force restart 
   p = 0                         ; counter to be encrypted 
   Loop Read, %A_ScriptFullPath%, %EncFile% 
   { 
      L =                        ; processed line 
      Loop % StrLen(A_LoopReadLine) 
      { 
         i++ 
         IfGreater i,8, {        ; all 9 pad values exhausted 
            u := p 
            v := k5              ; another secret 
            p++                  ; increment counter 
            TEA(u,v, k1,k2,k3,k4) 
            Stream9(u,v)         ; 9 pads from encrypted counter 
            i = 0 
         } 
         StringMid c, A_LoopReadLine, A_Index, 1 
         a := Asc(c) 
         if a between 32 and 126 
         {                       ; chars > 126 or < 31 unchanged 
            a += s%i% 
            IfGreater a, 126, SetEnv, a, % a-95 
            c := Chr(a) 
         } 
         L = %L%%c%              ; attach encrypted character 
      } 
      FileAppend %L%`n 
   } 
Return 

DECRYPT: 
   FileDelete %DecFile% 
   i = 9                         ; pad-index, force restart 
   p = 0                         ; counter to be encrypted 
   Loop Read, %EncFile%, %DecFile% 
   { 
      L =                        ; processed line 
      Loop % StrLen(A_LoopReadLine) 
      { 
         i++ 
         IfGreater i,8, {        ; all 9 pad values exhausted 
            u := p 
            v := k5              ; another secret 
            p++                  ; increment counter 
            TEA(u,v, k1,k2,k3,k4) 
            Stream9(u,v)         ; 9 pads from encrypted counter 
            i = 0 
         } 
         StringMid c, A_LoopReadLine, A_Index, 1 
         a := Asc(c) 
         if a between 32 and 126 
         {                       ; chars > 126 or < 31 unchanged 
            a -= s%i% 
            IfLess a, 32, SetEnv, a, % a+95 
            c := Chr(a) 
         } 
         L = %L%%c%              ; attach encrypted character 
      } 
      FileAppend %L%`n 
   } 
Return 


TEA(ByRef y,ByRef z,k0,k1,k2,k3) ; (y,z) = 64-bit I/0 block 
{                                ; (k0,k1,k2,k3) = 128-bit key 
   IntFormat = %A_FormatInteger% 
   SetFormat Integer, D          ; needed for decimal indices 
   s := 0 
   d := 0x9E3779B9 
   Loop 32 
   { 
      k := "k" . s & 3           ; indexing the key 
      y := 0xFFFFFFFF & (y + ((z << 4 ^ z >> 5) + z  ^  s + %k%)) 
      s := 0xFFFFFFFF & (s + d)  ; simulate 32 bit operations 
      k := "k" . s >> 11 & 3 
      z := 0xFFFFFFFF & (z + ((y << 4 ^ y >> 5) + y  ^  s + %k%)) 
   } 
   SetFormat Integer, %IntFormat% 
   y += 0 
   z += 0                        ; Convert to original ineger format 
} 

Stream9(x,y)                     ; Convert 2 32-bit words to 9 pad values 
{                                ; 0 <= s0, s1, ... s8 <= 94 
   Local z                       ; makes all s%i% global 
   s0 := Floor(x*0.000000022118911147) ; 95/2**32 
   Loop 8 
   { 
      z := (y << 25) + (x >> 7) & 0xFFFFFFFF 
      y := (x << 25) + (y >> 7) & 0xFFFFFFFF 
      x  = %z% 
      s%A_Index% := Floor(x*0.000000022118911147) 
   } 
}

mfg
IsNull
 
Hi,

Machs doch ganz einfach und coder das ganze mit XOR...

Geht ganz leicht... (Pseudocode:)
Code:
1. Wandle die Nachricht in ein Byte-Array um
2. Verlängere den Schüssel, bis er die länge von der Nachricht hat
3. Wandle auch den Schlüssel und ein Byte-Array um
4. Durchlaufe nun jedes einzele Zeichen und führe folgedes aus:
     Nachricht[i] = Nachricht[i] XOR (Schlüssel[i] XOR 0xFF)
5. Wandle die Nachricht wieder in ein Zeichen um...
Das schöne daran: Codieren und Decodieren funktioniert mit der gleichen Funktion

Gruß Chris
 
Oder implementier RSA, das ist auch sehr einfach, da Java die nötigen Funktionen schon bietet. Wenns dir zu kompliziert ist tuts warscheinlich auch ne einfache Vigin?rechiffre, die ja nichts weiter als erweitertes Cesar ist.
 
Wäre echt supi, wenn das jmd. hier posten könnte. Den ganzen Code + Benutzeroberfläche (Frame heißt das glaub ich^^). Also irgendein Verschlüsselungsalgorithmus wie Vignere oder so.

Sonst noch was? Wir sind nicht dazu da um _deine_ _kompletten_ Hausaufgaben zu erledigen. Hast du überhaupt dich selbst damit beschäftigt? Also diese Anfragen werden immer dreister.
Wenn du nun Tipps brauchst, welche Algorithmen sich dafür eignen oder wenn du ein bestimmtes Problem beim Umsetzen eines Algos hast, dann wäre das eine andere Sache. Aber sich am selben Tag auf einem Board anzumelden und gleich nach einer kompletten Hausaufgabenerledigung zu fragen ist wirklich enorm dreist. Am besten du überdenkst nochmal deine Einstellung oder verschwindest von diesem Board. Das klingt vielleicht ein bisschen unfreundlich, aber diese Einstellung von wegen, "Lass die anderen mal meine Hausaufgaben erledigen" widert mich wirklich an.

@Topic: Wo liegt denn dein Problem mit z.B. Vigenere? Welchen Teil davon verstehst du nicht oder kannst du nicht umsetzen? Es gibt auch schon sehr viele Beispielimplemtentierungen von Vigenere z.B. bei Wikipedia. Warum helfen dir diese nicht weiter?
 
danke leute....
ich werd mal schauen, ob's hilft... kann zwar gar nichts im moment mit anfangen, aber ich schau mal...
gut wäre es gewesen, wenn ich's einfach nur bei java hätte einfügen müssen und fertig

@Lesco: ich versteh schon was du meinst und ich würde es nicht machen, wenn's nicht unbedingt nötig wäre, aber ich brauch das echt dringend
 
gut wäre es gewesen, wenn ich's einfach nur bei java hätte einfügen müssen und fertig
Ja, wäre schön, gell?

Wenn du nicht Java progrmieren kannst, dann lass es! Und wenn du es für die Schule können musst, dann lerne die Sprache!

ich werd mal schauen, ob's hilft... kann zwar gar nichts im moment mit anfangen, aber ich schau mal...
So kannst du nicht? Google scheinst du ja sowieso nicht zu kennen. Da findet man im nu Crypt-Algos in Java. :rolleyes:

IsNull
 
Oh man jetzt habt ihr hier im HaBo die Scheiße auch schon am Hals mit den Studenten und Abiturlern die kein Bock auf Java haben. Dachte das wär nur in Java-Forum so übel, aber dass die diese anstrengende Registration hier auf sich nehmen nur um dann abzublitzen drückt ja schon ne gewisse Verzweiflung aus *rofl* Aber wir bleiben hart oder!? ;)
 
Zurück
Oben