Verständnisfrage zum Verschlüsseln



  • Hey @all,

    ich hatte mir schon folgenden Thread angesehen, jedoch ohne Erfolg
    http://www.c-plusplus.net/forum/viewtopic.php?t=39469

    Hier mal der Code:

    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    
    using namespace std;
    
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    
    __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Beenden1Click(TObject *Sender) {
      this->Close();        
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Speichern1Click(TObject *Sender) {
      if(SaveDialog1->Execute() == ID_OK) {
        fstream file(SaveDialog1->FileName.c_str(), ios::out | ios::binary);
        if(file) {
          string line;
          line = RichEdit1->Lines->Text.c_str();
          encode(Edit1->Text.c_str(), line);
          file.write(line.c_str(), line.length());
          file.close();
        }
      }
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::encode(string _Key, string& _Text) {
      for(int i=0, j=0; i<_Text.length(); i++, j++) {
        if(j>=_Key.length())
          j = 0;
        _Text[i] ^= _Key[j];
      }
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::ffnen1Click(TObject *Sender) {
      if(OpenDialog1->Execute() == ID_OK) {
        fstream file(OpenDialog1->FileName.c_str(), ios::in | ios::out | ios::binary);
        if(file) {
          file.seekg(0, ios::end);
          unsigned long filesize = streamoff(file.tellg());
          file.seekg(0, ios::beg);
    
          char* pBuffer = new char[filesize];
          file.read(pBuffer, filesize);
          string line = pBuffer;
          encode(Edit1->Text.c_str(), line);
    
          RichEdit1->Lines->Text = line.c_str();
          file.close();
        }
      }
    }
    //---------------------------------------------------------------------------
    

    Kann mir bitte jemand erklären, warum das lesen nicht funktioniert? ich bekomme immer nur eine gewisse Anzahl an Buchstaben dekodiert, beispielsweise

    [ Zeige Optionen  ] [ Verstecke Optionen  ] [ Zeige Smilieliste  ] [ Verstecke Smilieliste  ] [ Zeige BB-Code-Tag-Buttons  ] [ Verstecke BB-Code-Tag-Buttons  ] [ Zeige Sonderzeichen-Buttons  ] [ Verstecke Sonderzeichen-Buttons  ]
    

    erzeugt beim Entschlüsseln

    [ Zeige Optionen <jav
    

    Kann mir bitte jemand helfen?

    MfG Roman1311



  • Hmm... hab' mich jetzt nicht genauer damit beschäftigt, aber du schreibst:

    if(j>=_Key.length()) 
        j = 0;
    

    Ist die ent/verschlüsselte Zeichenkette zufällig genauso lang wie dein Schlüssel?


Anmelden zum Antworten