Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 28.07.2007, 17:54 Titel: Eine kleine simple Dateiverschlüsselung |
|
|
Diese Art der Verschlüsselung ist nicht besonders sicher.
Sie soll nur darstellen, wie man UNWICHTIGE Dateien verschlüsseln kann. So dass sie von anderen Personen nicht mehr gelesen werden kann.
Und weil der Code auch nicht besonders lang ist, Poste ich ihn direckt :
Decoder:
Code: | dim as string FileInput,FileOutput,Passwort
dim as ubyte datain,dataout,Passchar,CryptCode
dim as integer Runs,PasswordPos
rtr1:
input "Dateiname zum entschlüsseln?";FileInput
open FileInput for binary as #1
If LOF(1) = 0 Then Print "Datei ("+FileInput+") nicht gefunden oder nicht zugreiffbar!":close #1:goto rtr1
rtr2:
input "Passwort:";Passwort
If Len(Passwort) < 6 Then Print "Das Passwort ist zu schwach!":goto rtr2
Randomize Len(Passwort)*VAL(MID(DATE,LEN(DATE)-1,2))^15
FileOutput=MID$(FileInput,1,LEN(FileInput)-5)
open FileOutput for binary as #2
Print LOF(1)
DO
PasswortPos=Runs Mod LEN(Passwort)
Passchar=ASC(MID(Passwort,PasswortPos,1))
Runs+=1
get #1,,datain
Cryptcode=INT(RND * 1024 * 16)+Passchar
dataout=datain - Cryptcode
put #2,,dataout
LOOP UNTIL EOF(1)
print "Abgeschlossen."
sleep
|
Encoder:
Code: | dim as string FileInput,FileOutput,Passwort
dim as ubyte datain,dataout,Passchar,CryptCode
dim as integer Runs,PasswordPos
rtr1:
input "Dateiname zum verschlüsseln?";FileInput
open FileInput for binary as #1
If LOF(1) = 0 Then Print "Datei ("+FileInput+") nicht gefunden oder nicht zugreiffbar!":close #1:goto rtr1
rtr2:
input "Passwort:";Passwort
If Len(Passwort) < 6 Then Print "Das Passwort ist zu schwach!":goto rtr2
Randomize Len(Passwort)*VAL(MID(DATE,LEN(DATE)-1,2))^15
FileOutput=FileInput+".coded"
open FileOutput for binary as #2
Print LOF(1)
DO
PasswortPos=Runs Mod LEN(Passwort)
Passchar=ASC(MID(Passwort,PasswortPos,1))
Runs+=1
get #1,,datain
Cryptcode=INT(RND * 1024 * 16)+Passchar
dataout=datain + Cryptcode
put #2,,dataout
LOOP UNTIL EOF(1)
print "Abgeschlossen."
sleep
|
Das Passwort muss mindestens 6 Zeichen enthalten.
Ach ja:
Jedes neue Jahr macht die Daten automatisch ungültig
Ich finds lustig  _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 28.07.2007, 18:18 Titel: |
|
|
De- und Encoder ließen sich auch problemlos in eine einzige Funktion schreiben. Die Routine unterscheidet sich ja nur in einer Zeile, wenn ich es richtig sehe. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 28.07.2007, 18:55 Titel: |
|
|
Jup
Der Algo ist übrigens selbst erfunden und ich konnte trotzdem die datei auf einen andren Weg nicht entschlüsseln. Ist er villeicht doch sicher?
Ich versuch ihn mal so umzubauen, das er auch Strings in Programmen verschlüsseln kann  _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 28.07.2007, 19:10 Titel: |
|
|
Der Algorithmus ist sicher, solange der Schlüssel mindestens so lang wie die zu verschlüsselnde Datei ist. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 28.07.2007, 19:16 Titel: |
|
|
Und das ist er
Denn eine Textdatei mit Code: | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
enthält niemals die gleiche gleiche Reinfolge.
Ich versuche ihn noch weiter auszubauen. _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 28.07.2007, 19:20 Titel: |
|
|
Die "gleiche Reihenfolge" brauchst du gar nicht. Auch die RND-Funktion lässt sich berechnen (wenn man weiß, wie sie implementiert ist). Sie macht die Verschlüsselung nicht sicherer, sondern auf den ersten Blick nur schwerer durchschaubar. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 28.07.2007, 19:24 Titel: |
|
|
Es sei denn, man entwickelt einen eigenden Zufallsgenerator der die Zahlen auf unbekannten Wege erstellt _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 28.07.2007, 19:31 Titel: |
|
|
Auch das macht die Sache nur vorerst aufwändiger. Dann lässt du eben den Computer ein paar Millionen Verschlüsselungen erstellen und vergleichen, bis du weißt, wie sich der Zufallsgenerator auf die Verschlüsselung auswirkt. Ab dann ist es eine reine Vigenère-Verschlüsselung. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 28.07.2007, 19:31 Titel: |
|
|
Hehe, du musst immer aufpassen, dass durch ziemlich lange Konstrukte nicht die Möglichkeiten der Kombinationen einschränkst und so frühzeitige Kollisionen provozierst.
(Damit meine ich, dass du dir mit solchen langen Konstrukten
Code: |
Randomize Len(Passwort)*VAL(MID(DATE,LEN(DATE)-1,2))^15
|
nicht mehr Sicherheit zerstörst, als du aufbaust.
Ich hab vor kurzem erst etwas ähnliches in C geschrieben. Da hatte ich eher ein Problem, eine Möglichkeit zu finden, den Zufallsgenerator zu initialisieren, unabhängig von der Zeit, aber vom Passwort abhängig. Jedoch ohne großartig eine Kollision zu erzeugen.
Naja, das hatt ich dann geschafft. Allerdings hat mir CWF ein bisschen gezeigt, wie unsicher sowas trotzdem ist. Er hat mir mal eine Beispiel-Routine eines bekannten C-Compilers disassembliert gezeigt. Dazu eine Erklärung...2 bekannte Zeichen reichten aus, um die ganze Datei zurückzurechnen.
Was man bräuchte, wäre also ein kryptographisch sicherer Pseudo-Zufallszahlengenerator. (Übrigens hat BIND, ein Programm was auf den meisten DNS-Servern läuft, gerade auch Probleme mit seinem Zufallsgenerator (hinter sich).) _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 28.07.2007, 19:36 Titel: |
|
|
Bei der Erzeugung von PGP-Schlüsseln setzt man auch mal auf die Bewegung der Maus. Also während der Schlüssel erzeugt wird, muss der Benutzer willkürlich die Maus hin- und herbewegen, und diese Bewegungen dienen als Zufallswerte. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 28.07.2007, 19:38 Titel: |
|
|
Achso, btw...Ich wüsste nicht warum ich unwichtige Daten mit einem unsicheren Verfahren verschlüsseln sollte?
Entweder sie bleiben unverschlüsselt auf der Platte oder ich setz ein wirklich bewiesenes kryptographisch halbwegs sicheres System dafür ein. _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
|