Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Memory Stick verschlüsseln mit C

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
06.08.2004, 10:13 Uhr
fexfixfox




Zitat von ao:

Eine Alternative wäre ein rekursiver Ansatz:

1. Ein Verzeichnis öffnen
2. Alle Einträge (Dateien und Unterordner) nacheinander holen und verarbeiten:
3a. Ist es eine Datei -> Pfad und Namen wegschreiben (für die Wiederherstellung), dann Inhalt lesen, verschlüsseln und wegschreiben
3b. Ist es ein Verzeichnis -> Pfad wegschreiben (für Wiederherstellung), Verzeichnis öffnen und bearbeiten (siehe Punkt 1).
4. Nächster Eintrag.



ok... wenn man den Namen und den Pfad der Verzeichnisse und Dateien wegschreibt/in ein File speichert, sind die originalen Daten dann im grundegenommen gelöscht? sehe ich das richtig?
bei der wiederherstellung kann man mittels namen und pfad die ganze struktur mit den files wiederherstellen. ist das richtig?
ist dan eine verschlüsselung der daten noch nötig? in dem file in dem sie gespeichert sind kann man sie ja nicht lesen.

und wie schreibe ich den pfad und namen eines Verzeichnisses/Datei heraus?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
06.08.2004, 10:56 Uhr
ao

(Operator)


Gelöscht sind die Originale erst dann, wenn sie gelöscht wurden. Das Auslesen und Wegschreiben auf einen anderen Ort löscht natürlich nicht automatisch die Ursprungsdateien.

Das Ergebnis dieser ganzen Aktion ist ein großes File mit diesem Inhalt (beispielhaft):

(Name des Wurzelverzeichnisses)(Name der ersten Datei)(Inhalt der ersten Datei)(Name der zweiten Datei)(Inhalt)(Name des ersten Unterordners)(Name der ersten Datei im Unterordner)(Inhalt).....

Was da noch fehlt, sind irgendwelche Ende-Marken, die anzeigen, dass hier der Inhalt eines Unterordners zuende ist und dass es eine Ebene höher weitergeht. Du wirst also wahrscheinlich die Daten (Namen und Inhalte) in irgendwelche Rahmeninformation reinpacken wollen.

Das ist ein brauchbarer Schutz gegen zufälliges Öffnen und gegen Leute, die nur Word-Dokumente und Excel-Tabellen kennen, aber nicht wissen, was ein File ist.

Wer mit Norton-Utilities oder anderen File-Viewern umgehen kann, kann natürlich sowas aufmachen und ansehen und zumindest Teile der Information (z.B. Textteile bei Word-Dokumenten) herausholen.

Aber wenn du diesen ganzen Datenstrom schon mal hast, ist es ein Klacks, ihn unterwegs noch durch einen Krypto-Algorithmus zu schicken.

Die einschlägigen Funktionen heißen

(ANSI)
fopen - Datei öffnen oder anlegen
fread - Datei lesen
fwrite - Datei schreiben
fclose - Datei schließen
remove - Datei löschen

(ab hier POSIX)
opendir - Ordner öffnen
readdir - Ordner-Eintrag holen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
07.08.2004, 12:21 Uhr
fexfixfox



hiihio

also ich möchte jetzt ein ganz kleines Testprogramm machen. Und zwar möchte ich ein .doc file verschlüsseln indem ich den den inhalt des files in ein binaryfile speichere.

ich öffne das file mit fopen, danach hole und speichere ich den inhalt mit fgets in eine variable, welche in ein binaryfile gespeichert wird.
am schluss wird noch das original gelöscht.

so müsste das doch gehen, oder?


danke viel mals für eure hilfe! und entschuldigt mich falls ich vieleicht manchmal zu blöde fragen stelle

gruss fox
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
09.08.2004, 08:43 Uhr
ao

(Operator)


Mit fgets geht das nicht, weil das für Textdateien gemacht ist, die eine Zeilenstruktur haben. Word-Dokumente sind sog. "Binärdateien", die müssen mit fread gelesen werden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
09.08.2004, 09:04 Uhr
fexfixfox




Zitat von ao:
Mit fgets geht das nicht, weil das für Textdateien gemacht ist, die eine Zeilenstruktur haben. Word-Dokumente sind sog. "Binärdateien", die müssen mit fread gelesen werden.


ich hab zwar schon mit fread gearbeitet, habe aber dabei immer gewusst was ich aus der binärdatei lesen möchte.
jetzt ist es aber so, dass ich nicht weis was ich heraus lesen möchte.
wie mach ich das am einfachsten, wenn ich einfach die ganze Datei einlesen und abspeichern möchte?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
09.08.2004, 09:28 Uhr
fexfixfox



am besten wäre es, wenn ich den gesammten inhalt eines beliebigen dokumentes (.txt .pdf .doc ...) in ein string speichern könnte. dann könnte ich den verschlüsseln und in ein binärfile abspeichern.
was mir auch noch unklar ist, wie ich den pfad und den namen aus einem file herauslese?!

danke für die antworten!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
09.08.2004, 09:44 Uhr
ao

(Operator)


Die Größe der Datei bestimmen (z.B. mit fseek und ftell), dann die entsprechende Menge Speicher holen und mit fread das File einlesen.

Aber du brauchst nicht das ganze File auf einmal im Speicher, du kannst auch blockweise arbeiten. Das hat mehrere Vorteile:

1. Du brauchst die Länge der Datei gar nicht zu messen, du fängst einfach vorne an und arbeitest dich stückweise bis zum Ende durch.

2. Der Speicherbedarf des Programms ist konstant und nicht von der Größe der verarbeiteten Dateien abhängig. Damit bist du vor einer Menge unliebsamer Überraschungen sicher.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
09.08.2004, 09:53 Uhr
ao

(Operator)



Zitat von fexfixfox:
am besten wäre es ...

He, Foxi, willst du eigentlich auch noch was selber programmieren? Du hast schon einen Haufen Tipps gekriegt, wie wärs denn, wenn du jetzt einfach mal anfängst?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
09.08.2004, 11:28 Uhr
fexfixfox




Zitat von ao:
[quote fexfixfox]am besten wäre es ...

He, Foxi, willst du eigentlich auch noch was selber programmieren? Du hast schon einen Haufen Tipps gekriegt, wie wärs denn, wenn du jetzt einfach mal anfängst?[/quote]

hehe... stimmt schon. hab jetzt auch angefangen, und folgendes programmerstellt:

C++:

int i=0;
char buffer[100];
int wert=0;
    
fkt_fileoeffnen();  //pt_file1
fkt_fileerstellen(); //pt_file2

    while (wert==0)
    {
    fread(buffer,sizeof(buffer),1,pt_file1);
    fwrite(buffer,sizeof(buffer),1,pt_file2);    
    printf("%i: %s\n",i,buffer);  
    wert=feof(pt_file1);
    i++;
    }    
      
fkt_fileschliessen();



dabei wird zuerst ein wordfile geöffnet (pt_file1) und ein neues wordfile (pt_file2) erstellt. in der whileschlaufe wird nun der inhalt von der ersten in die zweite datei kopiert.

das geht alles wunderbar, solange das wordfile nicht zu gros ist. ist es ein grosses wordfile, ertönt eine gewaltige piepstonwelle !

weis vieleicht gerade jemand woran das liegt?
wäre cool!

danke gruss fexfixfox
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
09.08.2004, 15:21 Uhr
ao

(Operator)


Auch printf tuts nur mit Text richtig, mit Binärdaten kann alles mögliche passieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: