N00P braucht hilfe -- Verschlüsselung von dateien mit xor oder sowas?!
-
Ich muss ein Programm zur Verschlüsselung von dateien schreiben... ich wollte eine andere datei als key benutzen... ich habe schon ein programm geschrieben, der verschlüsselt wohl, aber dekodiert den kram einfach nicht wieder. hab schon alles ausprobiert funkt aber nicht.. auf eine antwort würde ich mich mega freuen... (mit quelltext wäre perfekt)
-
Noop@c++ schrieb:
(mit quelltext wäre perfekt)
Das gilt insbesondere für Problembeschreibungen!
"Funktioniert nicht" reicht nicht aus.
-
Tach auch !
Also wenn ich das richtig verstanden habe geht´s hier um Verschlüsselung !?!
Da kannst du auch mal hier gugen ...Greetz
The Geek
-
Besten dank hat mir schon etwas weiter geholfen... ach ja un hier ist der quell text::::
include <vcl\vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { // setzt alle Editfelder auf NULL Edit1->Text = ""; Edit2->Text = ""; Edit3->Text = ""; Edit4->Text = ""; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if (OpenDialog1->Execute()) { Edit1->Text = OpenDialog1->FileName; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { if (OpenDialog1->Execute()) { Edit2->Text = OpenDialog1->FileName; } } //--------------------------------------------------------------------------- // vergleicht die editfelder wenn edit1 den inhalt wechselt void __fastcall TForm1::Edit1Change(TObject *Sender) { if (Form1->Edit1->Text != "" && Form1->Edit2->Text != "" && Form1->Edit3->Text != "" && Form1->Edit4->Text != "") { Form1->Button3->Enabled = true; // setzt Buttom 3 auf "AN" } else { Form1->Button3->Enabled = false; // setzt Buttom 3 auf "aus" Form1->Button2->SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Edit2Change(TObject *Sender) { if (Edit1->Text != "" && Edit2->Text != "" && Edit3->Text != "" && Edit4->Text != "") { Button3->Enabled = true; } else { Button3->Enabled = false; Edit3->SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Edit3Change(TObject *Sender) { if (Edit1->Text != "" && Edit2->Text != "" && Edit3->Text != "" && Edit4->Text != "") { Button3->Enabled = true; } else { Button3->Enabled = false; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Edit4Change(TObject *Sender) { if (Edit1->Text != "" && Edit2->Text != "" && Edit3->Text != "" && Edit4->Text != "") { Button3->Enabled = true; } else { Button3->Enabled = false; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { Edit1->Text = ""; Edit2->Text = ""; Edit3->Text = ""; Edit4->Text = ""; } //--------------------------------------------------------------------------- void __fastcall TForm1::beenden1Click(TObject *Sender) { Form1->Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { if(Edit1->Text == Edit2->Text) { char *Text = "Quell- und Zieldatei sind identisch!\nDies führt zur Zerstörung der Quelldatei."; Application->MessageBoxA(Text,"Eingabefehler",MB_OK|MB_ICONWARNING); Button1->SetFocus(); } else if(Edit3->Text != Edit4->Text) { char *Text = "Die Passworteingaben stimmen nicht überein!"; Application->MessageBoxA(Text,"Eingabefehler",MB_OK|MB_ICONWARNING); Edit3->SetFocus(); } else { using namespace std; //Namensbereich festlegen //Cursor auf Sanduhr zum Start der Wandlung Screen->Cursor = crHourGlass; char namequelle[1000]; //Speicher für Text reservieren Edit1->GetTextBuf(namequelle, 1000); //Text in Speicher kopieren char nameziel[1000]; Edit2->GetTextBuf(nameziel, 1000); //Kanäle zu den Dateien werden geöffnet if stream quelle(namequelle, ios::in|ios::binary); ofstream ziel(nameziel, ios::out|ios::binary); if(!quelle) { char *Text = "Quelldatei existiert nicht!"; Application->MessageBoxA(Text,"Eingabefehler",MB_OK|MB_ICONWARNING); Button1->SetFocus(); } else if(!ziel) { char *Text = "Zieldatei kann nicht erzeugt werden!"; Application->MessageBoxA(Text,"Systemfehler",MB_OK|MB_ICONERROR); Button2->SetFocus(); } else { char keybox[256], sbox[256], passwort[30]; int i, j=0, x=0, y=0, Zeichen; Edit3->GetTextBuf(passwort, 30); /*Verschlüsselt das Passwort in keybox Zeichen für Zeichen. Sind alle Zeichen des Passwortes eingemappt, geht es mit dem ersten Zeichen weiter*/ for (i=0;i<=255;i++) keybox[i]=*(passwort+(i%StrLen(passwort))); //Füllt das Array sbox mit den ASCII-Zeichen von 0 bis 255 for (i=0;i<=255;i++) { sbox[i]=i; } for (i=0;i<=255;i++) { //UND-Verknüpfung begrenzt Ergebnis auf ASCII-Zeichensatz j=(j+sbox[i]+keybox[i])&255; //j muß bei der ersten Ausführung 0 sein!! //Austausch der ASCII-Zeichen von sbox[i] und sbox[j] swap(&sbox[i],&sbox[j]); } /*Liest ein Zeichen nach dem anderen aus der Quelldatei und schreibt das Ergebnis in die Zieldatei(ziel) bis EOF erreicht in der Quelldatei(quelle) Konvertiert dabei zeichenweise plaintext(Klarschrift) in ciphertext(Geheimschrift)*/ while ((Zeichen = quelle.get()) != EOF) { //x entspricht der Anzahl der Aufrufe von rc4 x=(x+1) & 255; //Begrenzung auf ASCII-Zeichensatz durch UND-Verknüpfung y=(y+sbox[x]) & 255; //Austausch der ASCII-Zeichen von sbox[x] und sbox[y] swap(&sbox[x],&sbox[y]); /*XOR-Verknüpfung des Originalzeichens und dem sbox-Element {UND-Verknüpfung begrenzt auf ASCII-Zeichensatz}*/ ziel.put(Zeichen ^ sbox[(sbox[x]+sbox[y]) & 255]); } //Cursor zurücksetzen auf Default Screen->Cursor = crDefault; char *Text = "Die Codierung/Decodierung wurde erfolgreich abgeschlossen!"; Application->MessageBoxA(Text,"Information",MB_OK|MB_ICONINFORMATION); Edit3->Text = ""; Edit4->Text = ""; Button1->SetFocus(); } } //---------------------------------------------------------------------------Edit:
Bitte die Code-Tags benutzen. Danke!
-
Hab mir jetzt deinen Code nicht angeschaut, aber schau auch mal hier: http://bcb-tutorial.c-plusplus.net/CodeSnippets/artikel3.html
-
Hab mir jetzt deinen Code nicht angeschaut, aber schau auch mal hier: http://bcb-tutorial.c-plusplus.net/CodeSnippets/artikel3.html
-
Hi,
also:das hier:
if (Form1->Edit1->Text != "" && Form1->Edit2->Text != "" && Form1->Edit3->Text != "" && Form1->Edit4->Text != "")würde ich zur Übersichtlichkeit so schreiben (ich weiß nicht ob's notwendig ist):
if (((Form1->Edit1->Text != "") && (Form1->Edit2->Text != "")) && ((Form1->Edit3->Text != "") && (Form1->Edit4->Text != "")))Dann würde ich die OnChange von Edit1, Edit2, Edit3 und Edit4 auf die selbe Funktion setzen (du machst ja eh immer das selbe).
Und warum machst du das hier:
char *Text = "Quell- und Zieldatei sind identisch!\nDies führt zur Zerstörung der Quelldatei."; Application->MessageBoxA(Text,"Eingabefehler",MB_OK|MB_ICONWARNING);nicht einfach so:
Application->MessageBox("Quell- und Zieldatei sind identisch!\nDies führt zur Zerstörung der Quelldatei.","Eingabefehler",MB_OK|MB_ICONWARNING);?
Das hier kommt am besten über TForm1 *Form1:
using namespace std;Und kannst du mir mal logisch diese Struktur erklären? Woher kommt da das if bzw. wo endet es?
if stream quelle(namequelle, ios::in|ios::binary); ofstream ziel(nameziel, ios::out|ios::binary);Erstmal ein Anfang...
MfG
Alexander Sulfrian