Verschlüsselung

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

blitzuser34

Betreff: Verschlüsselung

BeitragFr, Jan 18, 2008 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, hab mal versucht nen Text zu verschlüsseln. Weiß eigentlich gar nich, wie das geht. Hab trotzdem mal folgendes ausprobiert:

Code: [AUSKLAPPEN]
Function verschlüsseln$(Text1$, schlüssel$)
zeichennummer=1
laenge=Len(Text1$)
   For a=1 To laenge
      asccodenummer=Asc(Mid(schlüssel,zeichennummer,1))
      If asccodenummer>255 Then asccodenummer=asccodenummer-255
      zeichen=Asc(Mid(Text1$,a,1))+asccodenummer
      newcode$=newcode$+zeichen+",+,"
      zeichennummer=zeichennummer+1
      If zeichennummer>Len(schlüssel$) Then zeichennummer=1
   Next
End Function


Wollte mal fragenob des überhaupt was taugt oder ob man des in 5 min geknackt hat.

Edit:

hab des ganze ein bisschen abgeändert:

Code: [AUSKLAPPEN]
Function verschlüsseln$(Text1$, schlüssel$)
zeichennummer=1
laenge=Len(Text1$)
   For a=1 To laenge
      asccodenummer=Asc(Mid(schlüssel,zeichennummer,1))
      If asccodenummer>255 Then asccodenummer=asccodenummer-255
      zeichen=Asc(Mid(Text1$,a,1))+asccodenummer
      newbuchstabe$=Chr(zeichen)
      newcode$=newcode$+newbuchstabe$
      zeichennummer=zeichennummer+1
      If zeichennummer>Len(schlüssel$) Then zeichennummer=1
   Next
End Function

TheByte

BeitragFr, Jan 18, 2008 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi erstmal Wink

Zitat:
Wollte mal fragenob des überhaupt was taugt oder ob man des in 5 min geknackt hat.


Das Problem an deiner Verschlüsselung ist, dass man sie relativ leicht mit der Brute-Force-Methode knacken kann.
D.h. man nimmt den Text und probiert solange verschiedene Schlüssel aus, bis der wahre Text zum Vorschein kommt.

Aber für nen ersten Versuch garnicht mal so schlecht Exclamation

mfG, TheByte
aktuelles Projekt:
Nichts machen
Fortschritt: 50%

blitzuser34

BeitragFr, Jan 18, 2008 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Und was ist, wenn der Text 2x hintereinander verschlüsselt wird und der 2. Code aus dem 1. errechnet wird oder so? Auserdem: Liege ich richtig wenn ich sage, dass man erst mal die Verschlüsselungsmethode rausfinden müsste?

ZaP

BeitragFr, Jan 18, 2008 20:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Bruteforce macht sich hier nicht. Woher soll denn dein Programm wissen, ob es den text erfolgreich entschlüsselt hat? Das erfordert menschliche Gegenkontrolle. Und dann dauert das zulange. Wenn du nur Highscores o.ä. verschlüsselhn möchtest, reicht das, denke ich.
Starfare: Worklog, Website (download)

Eingeproggt

BeitragFr, Jan 18, 2008 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Da ich seit 2 Wochen an einem Referat über Kryptologie arbeite, mal ein wenig Klugscheiß dazu:

Die Sache mit Algorithmus kennen oder nicht: Such auf Wikipedia nach Kerckhoff-Prinzip Smile

Die Sache mit 2mal hintereinander ausführen und dann auch noch den Schlüssel abhängig von der vorigen Verschlüsselung zu machen:
Der Ansatz ist genial. Gratuliere, wenn dir das "mal so eben" eingefallen ist!
Allerdings fiel das den Leuten schon viel früher ein und heutzutage sind selbst Algorithmen, die ihre "Hauptschleife" 16mal oder öfter durchlaufen unsicher (->"DES")

Zu deinem Code:
Wen ich richtig liege, kannst du dir die Zeile sparen:
Code: [AUSKLAPPEN]
If asccodenummer>255 Then asccodenummer=asccodenummer-255

Es wird selten ein Zeichen im Schlüssel sein, was nen Ascii-Code über 255 hat Wink

Wie schon gesagt genz brauchbar für nen ersten Versuch. Und sind wir mal ehrlich: Wer versucht, Hobbyspiele zu knacken? Also reicht das vollkommen.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

blitzuser34

BeitragSa, Jan 19, 2008 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
@Eingeproggt:

Sollte eigentlich so aussehen Embarassed :

Code: [AUSKLAPPEN]
Function verschlüsseln$(Text1$, schlüssel$)
zeichennummer=1
laenge=Len(Text1$)
   For a=1 To laenge
      asccodenummer=Asc(Mid(schlüssel,zeichennummer,1))
      zeichen=Asc(Mid(Text1$,a,1))+asccodenummer
      If zeichen>255 Then zeichen=zeichen-255
      newbuchstabe$=Chr(zeichen)
      newcode$=newcode$+newbuchstabe$
      zeichennummer=zeichennummer+1
      If zeichennummer>Len(schlüssel$) Then zeichennummer=1
   Next
Return newcode$
End Function


(wenn Asc von Text und von Schlüssel zusammen über 255)

Edit: Ich hab es schon einmal gesagt: ich hab keine Ahnung von Verschlüsselung. Des isch mir in irgend einem Fach(glaub Geschichte) eingefallen.

Edit 2: Theoretisch könnte man den Text verschüsseln(2-3 mal), dann umdrehen, wieder verschlüsseln... Gibts sowas schon???? Oder man teilt die Zeile in versch. Teile(z.B. 4) und mischt sie nach nem Muster(wieder aus Code errechnen).

Eingeproggt

BeitragSa, Jan 19, 2008 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kann mich nur wiederholen: Deine Ideen sind genial. Aber es gibt sie schon Smile

Zitat:
dann umdrehen, wieder verschlüsseln

=Transposition ("Permutation")

Zitat:
Oder man teilt die Zeile in versch. Teile(z.B. 4)

=Blockverschlüsselung

Schau dir das einfach auf Wikipedia an, bevor du das Rad neu erfindest Smile

mfG, Christoph.

PS: Jo, der Code würd jetzt mehr Sinn machen.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

MichiMeister

BeitragSo, Jan 20, 2008 11:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau mal im Codearchiv. Da sind einige Verschlüsselungscodes enthalten, die nicht so locker zu knacken sind. RS6 oder so ähnlich heißt das eine Ding. Smile

Cardonic

BeitragSo, Jan 20, 2008 14:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Eingeproggt hat Folgendes geschrieben:
Die Sache mit 2mal hintereinander ausführen und dann auch noch den Schlüssel abhängig von der vorigen Verschlüsselung zu machen:

Daraus wird wohl nix (ausser du willst eine One-Way-Verschlüsselung)
Der Schlüssel der 2. Verschlüsselung hängt vom Chiffretext der. 1. Verschlüsselung ab. Folglich kannst du den Entschlüsselungschlüssel, um vom Chiffretext der 2. Verschlüsselung auf denjenigen der 1. Verschlüsselung zurückzurechnen ohne Kenntnis des Klartexts oder des Chiffretexts der 1. Verschlüsselung nicht berechnen.

@blitzuser34
So als kleiner Hinweis: Deine Verschlüsselung ist eine polyalphabetische Substitution

Ich würd die Verschlüsselung nicht durch planloses zusätzliches Vertauschen, Verschieben etc. sicherer machen.
Eine viel einfacher Massnahme kann die Sicherheit erheblich verbessern: Du machst die Verschlüsselung eines Buchstabens vom bereits verschlüsselten Text abhängig:
Code: [AUSKLAPPEN]
Function Encrypt$(Plain$,Key$)
   PlainLen = Len(Plain$)
   KeyLen = Len(Key$)
   PrevChar = 0
   For I = 1 To PlainLen
      KeyChar = Asc(Mid(Key$,(I-1) Mod KeyLen + 1,1))
      PlainChar = Asc(Mid(Plain$,I,1))
      CipherChar = (PlainChar + KeyChar + PrevChar) Mod 256
      Cipher$ = Cipher$ + Chr(CipherChar)
      PrevChar = CipherChar
   Next
   Return Cipher$
End Function

Function Decrypt$(Cipher$,Key$)
   CipherLen = Len(Cipher$)
   KeyLen = Len(Key$)
   PrevChar = 0
   For I = 1 To CipherLen
      KeyChar = Asc(Mid(Key$,(I-1) Mod KeyLen + 1,1))
      CipherChar = Asc(Mid(Cipher$,I,1))
      PlainChar = (CipherChar - KeyChar - PrevChar + 512) Mod 256
      Plain$ = Plain$ + Chr(PlainChar)
      PrevChar = CipherChar
   Next
   Return Plain$
End Function

; Zum Vergleich:
Print Encrypt("Verschlüsselung","abc")
Print Encrypt("verschlüsselung","abc")

mfg Cardonic

blitzuser34

BeitragSo, Feb 03, 2008 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
@Cordonic: Dein Code funktioniert nicht richtig.

Als Beiweis:

Original

Code: [AUSKLAPPEN]
Zeile 1
Zeile 2
Zeile 3
Zeile 4
Zeile 5
Zeile 6


verschlüsselt und entschlüsselt:

Code: [AUSKLAPPEN]
Zeile 1
Zeile 2
Zeile ³?
Zeile 4
Zeiìå 5
]Žh’@e#_

Cardonic

BeitragSo, Feb 03, 2008 16:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir funktioniert alles bestens.
Code: [AUSKLAPPEN]
var$ = Encrypt("Zeile 1"+Chr(13)+Chr(10)+"Zeile 2"+Chr(13)+Chr(10)+"Zeile 3"+Chr(13)+Chr(10)+"Zeile 4"+Chr(13)+Chr(10)+"Zeile 5"+Chr(13)+Chr(10)+"Zeile 6","abc")
var$ = Decrypt(var$,"abc")

Print var$


Vielleicht kannst du den Code posten, der das fehlerhafte Resultat geliefert hat ?

mfg Cardonic

Thunder

BeitragSo, Feb 03, 2008 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
[quote="Eingeproggt"]Allerdings fiel das den Leuten schon viel früher ein und heutzutage sind selbst Algorithmen, die ihre "Hauptschleife" 16mal oder öfter durchlaufen unsicher (->"DES")
quote]

meinst du damit 16 faches verschlüsseln?
wenn ja kann ich darüber nur lachen ich verschlüssle meine Geheimen texte immer 100000 mal das dauert zwar 5 min. aber es lohnt sich.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Thunder

BeitragSo, Feb 03, 2008 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
[quote="Eingeproggt"]Allerdings fiel das den Leuten schon viel früher ein und heutzutage sind selbst Algorithmen, die ihre "Hauptschleife" 16mal oder öfter durchlaufen unsicher (->"DES")
[quote]

meinst du damit 16 faches verschlüsseln?
wenn ja dann ist das wirklich nichts gutes was die da zusammenbringen. Ich verschlüssle meine Geheimen texte immer 100000 mal das dauert zwar 5 min. aber es lohnt sich.

link zu meinem Projekt :http://www.npage.de/userdaten/...istian.zip The Crypter( inklusive Anleitung)
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

blitzuser34

BeitragMo, Feb 04, 2008 10:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Global window=CreateWindow("Verschlüsselung",ClientWidth(Desktop())/2-250,ClientHeight(Desktop())/2-180,500,400,0,1)

Global text1label=CreateLabel("Text 1",10,10,200,15,window)
Global text1=CreateTextArea(10,30,480,100,window)

Global schlüssel=CreateLabel("Schlüssel",10,140,200,15,window)
Global schlfield=CreateTextField(10,165,480,20,window)

Global button=CreateButton("Verschlüsseln",110,200,80,25,window)
Global button2=CreateButton("Entschlüsseln",310,200,80,25,window)

Global Text2label=CreateLabel("Text 2",10,235,200,15,window)
Global text2=CreateTextArea(10,255,480,100,window)

Repeat
   Select WaitEvent()
   Case $803
      End
   Case $401   
      If EventSource()=button Then
         SetTextAreaText text2,Encrypt$(TextAreaText(text1),TextFieldText(schlfield))
      EndIf
      If EventSource()=button2 Then
         SetTextAreaText text2, Decrypt$(TextAreaText(text1),TextFieldText(schlfield))
      EndIf
   End Select
Forever

Function Encrypt$(Plain$,Key$)
   PlainLen = Len(Plain$)
   KeyLen = Len(Key$)
   PrevChar = 0
   For I = 1 To PlainLen
      KeyChar = Asc(Mid(Key$,(I-1) Mod KeyLen + 1,1))
      PlainChar = Asc(Mid(Plain$,I,1))
      CipherChar = (PlainChar + KeyChar + PrevChar) Mod 256
      Cipher$ = Cipher$ + Chr(CipherChar)
      PrevChar = CipherChar
   Next
   Return Cipher$
End Function

Function Decrypt$(Cipher$,Key$)
   CipherLen = Len(Cipher$)
   KeyLen = Len(Key$)
   PrevChar = 0
   For I = 1 To CipherLen
      KeyChar = Asc(Mid(Key$,(I-1) Mod KeyLen + 1,1))
      CipherChar = Asc(Mid(Cipher$,I,1))
      PlainChar = (CipherChar - KeyChar - PrevChar + 512) Mod 256
      Plain$ = Plain$ + Chr(PlainChar)
      PrevChar = CipherChar
   Next
   Return Plain$
End Function

Badudel

Betreff: tritons verschlüsselung

BeitragSo, Feb 10, 2008 13:09
Antworten mit Zitat
Benutzer-Profile anzeigen
ein sehr schönes verschlüsselungssystem gibts auch von triton:

http://www.silizium-net.de/bbcoded3.htm

Tritons Seite hat Folgendes geschrieben:
Dies ist also eine spezielle, oder erweiterte polyalphabetische Chiffrierung, die nicht durch Häufigkeits- und Wahrscheinlichkeitsberechnungen geknackt werden kann (wie es bei einfachem durch-xor-en der Fall wäre).


vielleicht ist das auch eine schöne möglichkeit... hab selbst aber keine ahnung vom verschlüsseln...

grüße
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik!

Cardonic

BeitragSo, Feb 10, 2008 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht schlecht, Triton's Idee.
Ich nehme aber an, dass weil das "oft" bei jedem Buchstaben bekannt ist mit ein wenig überlegung aus der Chiffre eine normale polyalphabetische Chiffre gemacht werden kann und somit dann auch mit der Häufigkeitsanalyse oder Mustersuche entschlüsselt werden kann (natürlich erst nachdem die Periodenlänge gefunden wurde).

Es ist aber mit Sicherheit so, dass mein Beispiel, dass den bereits verschlüsselten Text auch für den Schlüssel nutzt, sicherer ist.

mfg Cardonic
 

timmeTheOnly

BeitragMi, Feb 13, 2008 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hiho, hab mich auch mal drangesetzt...

Das kam raus:

Code: [AUSKLAPPEN]

SeedRnd MilliSecs()

t1$ = "timmeTheOnly"
k$ = "ich"
s = 0

t2$ = encrypt$(t1$,k$,s)

t3$ = decrypt$(t2$,k$,s)

Graphics 1024,768,32,2

Print t1$
Print t2$
Print t3$

WaitKey

Function encrypt$(t$,k$,s%)
   Local ret$, char$, tl, kl, pos
   
   tl = Len(t$)
   kl = Len(k$)
   
   For i = 1 To Len(t$)
      pos = (pos + 1) Mod kl
      
      char$ = Chr$(Asc(Mid$(t$,i,1)) Xor Asc(Mid$(k$,pos+1,1)))
      
      ret$ = ret$ + char$
      
      For j = 1 To s
         ret$ = ret$ + Chr$(Rand(0,255))
      Next
   Next
   
   Return ret$
End Function

Function decrypt$(t$,k$,s%)
   Local ret$, char$, tl, kl, pos
   
   tl = Len(t$)
   kl = Len(k$)
   
   For i = 1 To Len(t$)
      If cnt = 0
         pos = (pos + 1) Mod kl
         
         char$ = Chr$(Asc(Mid$(t$,i,1)) Xor Asc(Mid$(k$,pos+1,1)))
         
         ret$ = ret$ + char$
      EndIf
      
      cnt = (cnt + 1) Mod(s+1)
   Next
   
   Return ret$
End Function


Wäre nett, wenn das einer bewerten könnte.

ToeB

BeitragMi, Feb 13, 2008 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Das funzt ja Super ^^ Aber kannst du mal die Parameter erklären ? Ich kp die nicht ganz (also nur "k$") ...

Aber sonst, müsste mal lange dran sitzen um das zu entschlüsseln...

mfg Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Cardonic

BeitragMi, Feb 13, 2008 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
@timmeTheOnly: Seh' ich das richtig, dass die Verschlüsselung eine einfache XOr verschlüsselung ist, die mit dem zusätzlichen Parameter "s" noch zusätzlichen Datenschrott hinzufügt ?
Das macht die Verschlüsselung nicht sicherer und führt nur dazu, dass ein vielfaches der Datenmenge übertragen werden muss.

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.

Xeres

Moderator

BeitragMi, Feb 13, 2008 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn der Datenschrott die Häufigkeitsanalyse stört, macht sie die Verschlüsselung schon etwas komplizierter.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group