Einfache Verschlüsselung

Übersicht BlitzBasic Codearchiv

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Triton

Betreff: Einfache Verschlüsselung

BeitragDo, Nov 04, 2004 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mich schon immer für sowas interessiert und habe mal einen
kleinen Algorythmus geschrieben, der mir schnell und relativ sicher einen String mit Hilfe eines Passwortes verschlüsselt.

Code: [AUSKLAPPEN]

; *** by Triton, 04.11.2004, verbessert am 24.03.2009
; *** www.silizium-net.de
; Quelltext wird Zeichen für Zeichen mit dem um die Stelle
; des Zeichens (im Qelltext) verschobenen ASCII-Wert des
; Zeichens im Passwort geXORt
; => Spezielle-Polyalphabetische Chiffrierung
;(lässt sich nicht durch Wahrscheinlichkeitsermittlungen knacken)
Graphics 800,600,0,2
schrift=LoadFont("Lucida console",10)
SetFont schrift

txt$ = "Geht ein deutscher Techniker mit ein paar Konservendosen in den Urwald, kommt er mit einer Lokomotive heraus."
passwort$="Felix Wankel"
lp = Len(passwort$)
lt = Len(txt$)

Text 10,10, " Ursprünglicher Text: "+txt$
Text 10,25, "Verschlüsselter Text: "+code$(txt$,passwort$)
Text 10,40, "wieder entschlüsselt: "+code$(code$(txt$,passwort$),passwort$)
Text 10,55, "Passwort: "+passwort$
WaitKey()
End


;----
Function code$(txt$,passwort$)
   lp = Len(passwort$)
   lt = Len(txt$)
   For oft = 1 To lt
      zahl=((zahl+1) Mod lp)
      code$ = Mid$(passwort$,zahl+1,1)
      zeichen$ = Mid$(txt$,oft,1)
      txt2$ = txt2$+Chr$(Asc(zeichen$)Xor Asc(code$)*oft)
   Next
   zahl=0
   Return txt2$
End Function


Das Prinzip ist folgendes: Man geht die Zeichen des Passwortes
immer wieder von vorne bis hinten durch, nimmt den ASCII-Wert davon
und multipliziert (verschiebt) diesen um die Momentane Stelle im Ursprungstext. Das Zeichen des Quelltextes und das des Passwortes werden dann mit Xor verknüpft.
Dadurch entsteht selbst bei einem Passwort, das nur aus
einem Zeichen besteht, immer verschiedene Verschlüsselte Zeichen.

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).

Entschlüsselungsprofis bekommen es vermutlich trotzdem irgendwann raus, aber für jeden Laien ist das nur Datensalat.


Vielleicht nutzt es ja jemandem.
Coding: silizium-net.de | Portfolio: Triton.ch.vu
  • Zuletzt bearbeitet von Triton am Di, März 24, 2009 20:26, insgesamt 2-mal bearbeitet

BladeRunner

Moderator

BeitragDo, Nov 04, 2004 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Sehr nett. Hab ich erst neulich kurz drüber gebrütet. Bei einem 10stelligen Passwort hat man schon 256^10 (theoretische) Möglichkeiten. Zudem weiss der potentielle "Cracker" ja nicht wie lange das Passwort ist. Ergibt einen sehr sicheren Schutz.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Gina

BeitragDo, Nov 04, 2004 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Irgendwie will das bei mir nicht laufen. Hast du das mit Blitz+ gemacht?

Mir fällt aber nix auf, was ich nicht kenne. Komisch, es kommt jedenfalls "unable to open input file"

Gina.
www.jk-spiele.de
 

Edlothiol

BeitragDo, Nov 04, 2004 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Welche IDE benutzt du? Das scheint nicht am Code zu liegen.

Triton

BeitragDo, Nov 04, 2004 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Blitz2d...

Änder ggf. mal Graphics 800,600,0,2 in Graphics 800,600,16,2
vielleicht ist damit die output File gemeint..
Coding: silizium-net.de | Portfolio: Triton.ch.vu

Gina

BeitragDo, Nov 04, 2004 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
das hab ich probiert. Hab auch die Schriftart auf Arial geändert, aber es will einfach nicht... Sad

Da ist doch nix außergewöhnliches im Code, oder?

Gina.

EDIT: Ich glaubs ja nicht. Hatte es als Verschlüsselung.bb gespeichert und er mag wohl den Umlaut nicht, obwohl ich das schon öfter gemacht habe...
Jetzt klappt es jedenfalls. Sorry für die Verwirrung.

EDIT2: Gefällt mir sehr gut. Wollte auch schon öfter mal sowas machen, hab aber nie so recht die Zeit dafür gefunden. Vielen Dank dafür...
www.jk-spiele.de

Kernle 32DLL

BeitragMo, Dez 06, 2004 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Intressante idee,allerdings,wo soll man sowas in einem BB-Programm
oder Spiel einsetzten ? naja,trotsdem intressant ^^
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog]
Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89
Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009

DA

BeitragMo, Dez 06, 2004 15:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,

@ Kernle 32DLL
Vieleicht in Spielständen? Wink

Thx
DarkAngel
Deutscher Blitz Basic Chat

Jan_

Ehemaliger Admin

BeitragMo, Dez 06, 2004 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder Medien?!
between angels and insects

D2006

Administrator

BeitragMo, Dez 06, 2004 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
lol, man kann es genau da einsetzen, wo du heute ne Frage in Allgemein gestellt hast.

Echt amüsant...

MfG

TheProgrammer

BeitragMo, Dez 06, 2004 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.

Coole Sache.

Ich hab mal n' paar Funktionen mit der
Verschlüsselungsgrundlage geproggt, die ganze
Dateien ver- und entschlüsseln.

BlitzBasic: [AUSKLAPPEN]

datei1$ = Input(\"Zu verschlüsselnde Datei: \")
datei2$ = Input(\"Zu speichernde Datei: \")

Verschluesseln datei1$,datei2$

Function Verschluesseln(datei1$,datei2$,passwort$=\"passwort\")

file = ReadFile(datei1$)
file_w = WriteFile(datei2$)
If file Then

Repeat
If Eof(file)=0 Then
string_r$ = ReadLine(file)
lt = Len(string_r$)
lp = Len(passwort$)

For oft = 1 To lt
zahl=((zahl+1) Mod lp)
code$ = Mid$(passwort$,zahl+1,1)
zeichen$ = Mid$(string_r$,oft,1)
string_w$ = string_w$+Chr$(Asc(zeichen$)Xor Asc(code$)*oft)
Next
WriteLine file_w,string_w$
zahl = 0
string_w$ = \"\"
zeichen$ = \"\"
code$ = \"\"

Else
Return
CloseFile file
CloseFile file_w
EndIf
Forever

EndIf

End Function

Function Entschluesseln(datei1$,datei2$,passwort$=\"passwort\")

file = ReadFile(datei1$)
file_w = WriteFile(datei2$)
If file Then

Repeat
If Eof(file)=0 Then
string_r$ = ReadLine(file)
lt = Len(string_r$)
lp = Len(passwort$)

For oft = 1 To lt
zahl=(zahl+1) Mod lp
code$=Mid$(passwort$,zahl+1,1)
zeichen$ = Mid$(string_r$,oft,1)
string_w$ = string_w$+Chr$(Asc(zeichen$)Xor Asc(code$)*oft)
Next
WriteLine file_w,string_w$
zahl = 0
string_w$ = \"\"
zeichen$ = \"\"
code$ = \"\"

Else
Return
CloseFile file
CloseFile file_w
EndIf
Forever

EndIf

End Function


Einmal hat das Entschlüsseln bei mit jedoch nicht
geklappt...
aktuelles Projekt: The last day of human being
 

David

BeitragMo, Dez 06, 2004 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Warum du zwei Funktionen erstellst ist mir völlig rätselhaft... Rolling Eyes

grüße
http://bl4ckd0g.funpic.de

TheProgrammer

BeitragMo, Dez 06, 2004 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh...
Mir ist garnicht aufgefallen, dass
die Ent- und Verschlüsselung gleich
ablaufen.

Embarassed peinlich... Rolling Eyes Confused
aktuelles Projekt: The last day of human being
 

Netvampire

BeitragSa, Dez 11, 2004 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur ein Problem tritt im Moment bei mir auf:

Wenn ich die verschlüsselten Werte in eine Textdatei schreibe und in jede zeile einen Wert schreiben will, kommen mir die dummen Asci-steuerbefehle in die Quere, die einfach z.b. einen zeilensprung oder einen Tab, oder ein leerzeichen am zeilenanfang reincodieren.
Dadurch klappt dann die entschlüsselung natürlich auch nicht so gut.

Wie kann ich den solche Sache vermeiden? Kann man diese Steuerzeichen irgendwie "rausfiltern"? Also das man die Anzahl der möglichen ASCI-zeichen eingrenzt oder so?

Hat da jemand Ahnung wie man sowas realisiert? Ansonsten bin ich vollauf zufrieden mit der verschlüsselung, da sie absolut ausreichend und leicht zu bewerkstelligen ist. Danke nochmal....

Ctuchik

BeitragSa, Dez 11, 2004 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
WriteString und ReadString statt WriteLine und ReadLine benutzen?
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle!
Fraget euren Arzt oder Apotheker!

Firstdeathmaker

BeitragSa, Dez 11, 2004 21:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Coole Idee, das ist gut und kann man auch gut gebrauchen. Ich habe mich auch mal mit verschlüsseln beschäftigt, vor allem mit Einmalverschlüsselung und PGP.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

Netvampire

BeitragSa, Dez 11, 2004 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, zwei Probleme:

1. nimmt BlitzBasic bei Strings immer führende Leerzeichen und manche anderen Zeichen weg, wodurch halt ein Zeichen einfach fehlt. Das Problem hatte ich öfter, weil ich ne ganze Menge speichere(das passiert im übrigen auch mit binärzahlen und führenden Nullen. Ist ärgerlich, besonders wenn man nen subnetzrechner für ip-adressen bauen will, aber das ist ein anderes Thema).

2. ich benutze eine dll-library, die die Daten in eine Ini-Datei verpackt.
( http://www.blitzcoder.com/cgi-...omments=no ) Das Teil funktioniert zu gut, als da ich darauf verzichten möchte.
Und so eine Inidatei hat halt die Form
[Schlüsselwort]
Variable1=Wert1
Variable2=Wert2

und wenn nun Wert1 einen Zeilenumbruch hat, dann ist die Ini futsch. Dann gibts nur noch Datensalat. Und wenn Wert1 am Anfang ein Leerzeichen oder so hat, dann wird das ignoriert und auch wieder Datensalat.

Wirklich schwierig (für mich Very Happy ), aber ich hoffe man kann irgendwie nen Filter bauen, der nur "normale" ASCI-zeichen zulässt.

Wäre eine geniale Hilfe... Ich probiere jetzt noch selbst eine Weile was zu machen, wenn ich was habe melde ich mich.

Danke im Vorraus!

pixelshooter

BeitragDo, Apr 27, 2006 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich sag allen die hier irgendwelche verschlüsselungen basteln, sie mögen doch bitte was wie RSA benutzen, denn Vignère o.ä. zu knacken is echt nich so schwer
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc

d-bug

BeitragDo, Apr 27, 2006 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
@pixelshooter
Und wegen dieser doch sehr offensichtlichen Aussage hohlst du den Thread nach zwei Jahren wieder aus der Versenkung ? Wäre nett, wenn du das zukünftig unterlassen würdest.

Diese Verschlüsselungen dienen meistens auch nur dazu Otto-Normal-User vom Cheaten der Highscores abzuhalten, also sind sie durchaus ausreichend !

cheers

Triton

BeitragFr, Apr 28, 2006 13:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Und für Paddeltouren mit meinen Freunden nehme ich auch immer den heimischen Flugzeugträger Wink

Abgesehen davon bezweifle ich, dass du oder sonst wer in diesem Forum im Stande wäre, das zu knacken. Wir hatten schon mehrfach Threads wo das versucht wurde. Zwar gab es stets Ansätze zur Entschlüsselung, einen klartext konnte aber niemand liefern. Und hier sind wahrlich nicht wenige die was drauf haben.
Coding: silizium-net.de | Portfolio: Triton.ch.vu

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group