tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
14
ZUGRIFFE
307
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Hallo ich wollte gerne ein Bild verschlüsseln also eig nicht richtig sonder einfach nur das bild in C++ öffnen und eine 1 ans ände anhängen damit es nicht mehr geöffnet werden kann!
    Und das ganze soll natürlich auch anderrum gehen also cursor an letzte stelle und löscht die 1 wieder!
    Wie mache ich das?
    habe schion probiert mit io::binary erstmal einzulesen und wieder zu schreiben kam zwar ein Bild raus aber das hatte nur noch grün-gelbe linien
    Danke
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von MSVCplusplus Beitrag anzeigen
    Hallo ich wollte gerne ein Bild verschlüsseln also eig nicht richtig sonder einfach nur das bild in C++ öffnen und eine 1 ans ände anhängen damit es nicht mehr geöffnet werden kann!
    Das bringt aber für eine ganze Reihe von Bildformaten überhaupt nichts.
    Zitat Zitat von MSVCplusplus Beitrag anzeigen
    Und das ganze soll natürlich auch anderrum gehen also cursor an letzte stelle und löscht die 1 wieder!
    Wie mache ich das?
    habe schion probiert mit io::binary erstmal einzulesen und wieder zu schreiben kam zwar ein Bild raus aber das hatte nur noch grün-gelbe linien
    Also das Anhängen ginge ganz einfach mit ios::binary | ios::ate und ostream.put('1').

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Danke
    Aber wie kann ich dann Bilder ver und entschlüsseln?
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  4. #4
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hi

    Wie "sicher" solls denn werden?
    Wenn nur ein Standardnutzer vom Öffnen abgehalten werden soll:
    zB. jeden Bytewert um eins erhöhen.
    Am anderen Ende der Skala stehen Verfahren wie AES etc.
     

  5. #5
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Sicher soll's überhaupt nicht sein nur das ein normaler Nutzer es nicht mehr öffnen kann
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  6. #6
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Um den Vorschlag von oben nocheinma herzunehmen:
    Du holst ein Byte des Bildes in einen char, machst +=1 und schreibst das Byte in die neue Ausgabedatei.
    Und das für jedes Byte im Bild.
    Oder auch nur für die ersten 100 oder so.
    Solange der Header betroffen ist wird nichts mehr geöffnet.

    Gruß
     

  7. #7
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    Ich für meinen teil würde einfach openSSL verwenden. je nach verwendungszweck entweder direkt die OpenSSL binarys, oder ne applikation gegen libcrypto linken.

    Vom cryptologischen standpunkt her braucht man sich über caesar verfahren ("alles um 1 erhöhen" = caesar verschlüsselung mit key "1") gar nicht unterhalten. Ich finde das vaellt eher unter "verschleierung" als unter "verschlüsselung"
     

  8. #8
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Naja, es ist ja auch keine Verschlüsselung.
    Aber ein 0815-Windowsnutzer kommt damit auch schon nicht mehr zurecht.
     

  9. #9
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Danke erstmal
    Ich will auch nur ne 0815 Verschlüsselung
    @Sheel könntest du mir vll sagen wie ich denn die Datei einlese( wenn möglich mit ifstream) und jedes einzelne Zeichen Abfrage?
    Danke
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  10. #10
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Das findet man doch ganz leicht...
    http://www.cplusplus.com/reference/iostream/ifstream/
    read.
    Zum Rausschreiben mit ofstream: write

    Zum Dateigröße herausfinden tellg und seekg

    Gruß
     

  11. #11
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    Nun... die "billig" version sieht so aus:

    zum "entschlüsseln" -1 anstatt +1.

    Achtung untested - hab grad keinen C Compiler zur hand, keine garantie, dass nicht irgendwo noch tippfehler drin sind.
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char **argv) {
        FILE *fpin, *fpout;
        if (argc != 3) {
           printf("Usage: program <inputfile> <outputfile>");
           exit(-1);
        }
     
        fpin = fopen(argv[1], "rb");
        fpout = fopen(argv[2], "wb");
        if(!fpin || !fpout) {
            printf("fopen failed");
            exit(-2);
        }
        while(!feof(fpin)) {
            fputc((unsigned char)(fgetc(fpin) + 1), fpout);
        }
        fclose(fpin);
        fclose(fpout);
        return 0;
    }

    edit: stdlib.h eingefügt um warnings bezüglich exit() zu unterdrücken.
    Geändert von chibisuke (04.08.11 um 22:24 Uhr)
     

  12. #12
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Beim "fopen failed" sollte der eventuell geöffnete andere Stream auch wieder geschlossen werden.
    Binärmodus beim fopen?
    Und außerdem sollte das Ganze ja mit iostreams gemacht werden.
     

  13. #13
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    kann gerne nach belieben erweitert und verbessert werden.
    Aktuelle OS schliessen dateihandle so und so sauber, wenn die applikation beendet wird, aber ja, ganz korrekterweise würde man den anderen handle noch schliessen.

    binary mode wäre aus kompatiblitätsgründen sinnvoll, ist aber in der regel nicht notwendig. ... ich pass es trotzdem mal an.

    iostrams... ich mag diese STL dinger nicht... und der OP schieb nur, dass er es damit versucht hat, nicht dass er es unbedingt damit machen will. Das da oben ist ANSI-C code.
     

  14. #14
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    @chibisuke: Man sollte niemals feof auf diese Weise verwenden, das funktioniert nicht generell. Man sollte vielmehr prüfen, ob 1. etwas gelesen wurde und 2. auch etwas geschrieben wurde!

    Weiterhin ist eine sehr einfache, effektive Verschlüsselung die XOR Verknüpfung mit einer beliebigen, von 0 verschiedenen Zahl.

    Solche Transformationen kann man in C++ relativ elegant mit dem std::transform Algorithmus durchführen:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    #include <fstream>
    #include <iterator>
    #include <algorithm>
    #include <functional>
     
    ...
     
    std::ifstream in("bla.jpg", std::ios::binary);
    std::ofstream out("bla.jpg.x", std::ios::binary);
     
    if (!in.is_open()) return 1;
    if (!out.is_open()) return 2;
     
    char key = 1;
     
    std::istreambuf_iterator<char> start(in), end;
     
    std::transform(start, end,
                   std::ostreambuf_iterator<char>(out),
                   std::bind1st(std::plus<char>(), key));
     
    if (start != end) {
      // failed reading input file
      ...
    }
    if (!out) {
      // failed writing output file
      ...
    }
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  15. #15
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Danke an alle habe es jetzt hinbekommen mit den Codeschnipseln
    MFG
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

Ähnliche Themen

  1. Bild verschlüsseln
    Von sebastianb im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 7
    Letzter Beitrag: 08.02.11, 13:17
  2. URL mit PHP verschlüsseln
    Von Dörti.Hermi im Forum PHP
    Antworten: 6
    Letzter Beitrag: 30.08.07, 11:21
  3. Verschlüsseln
    Von d_Artagne im Forum .NET Datenverwaltung
    Antworten: 20
    Letzter Beitrag: 16.10.05, 21:52
  4. verschlüsseln
    Von hhunderter im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 30.06.05, 19:03
  5. verschlüsseln
    Von marcaurel1984 im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 15.06.05, 12:14

Stichworte