Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Eine kleine simple Dateiverschlüsselung

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 28.07.2007, 17:54    Titel: Eine kleine simple Dateiverschlüsselung Antworten mit Zitat

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 zwinkern
_________________
Bis irgendwann... grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 28.07.2007, 18:04    Titel: Antworten mit Zitat

lol
erinnert mich ein bissl an meine alte kaputte vernam methode vor lachen auf dem Boden rollen
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 28.07.2007, 18:18    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 28.07.2007, 18:55    Titel: Antworten mit Zitat

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 zwinkern
_________________
Bis irgendwann... grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 28.07.2007, 19:10    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 28.07.2007, 19:16    Titel: Antworten mit Zitat

Und das ist er grinsen

Denn eine Textdatei mit
Code:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

enthält niemals die gleiche gleiche Reinfolge.
Ich versuche ihn noch weiter auszubauen.
_________________
Bis irgendwann... grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 28.07.2007, 19:20    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 28.07.2007, 19:24    Titel: Antworten mit Zitat

Es sei denn, man entwickelt einen eigenden Zufallsgenerator der die Zahlen auf unbekannten Wege erstellt
_________________
Bis irgendwann... grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 28.07.2007, 19:31    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 28.07.2007, 19:31    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 28.07.2007, 19:36    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 28.07.2007, 19:38    Titel: Antworten mit Zitat

Achso, btw...Ich wüsste nicht warum ich unwichtige Daten mit einem unsicheren Verfahren verschlüsseln sollte? verwundert
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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz