перелазил много форумов и там пишут везде что что типо нужно подключать какието библиотеки для правильной работы функций. но я в своей проге никаких библиотек не подключаю их у меня и нету а она серавно ругается. прошу помочь и обьяснить хоть немного что можно сделать что бы ету ошибку предотвратить( не используя ету библиотеку =\). запуская в консольном режиме все пахало(правда там читалось сообщение из файла + ключ также читался тупо из файла) и не ругалось , а вот когда стал вылаживать на форму сразу перестало линковаться. ниже код проги
*.cpp
*.h
*.cpp
Код |
---|
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- //---------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if(!OpenDialog1->Execute()) return; Edit1->Text = OpenDialog1->FileName; load(OpenDialog1->FileName); Memo1->Text = oText; } //-------------------------------- void load(AnsiString file_name) { FILE *ofile; ofile = fopen(file_name.c_str(), "r"); if(ofile == NULL ) exit(0); while(!feof(ofile)) { count = (int)fread(oText, sizeof(char),10000000, ofile ); if(ferror(ofile)) { perror("Error of reading..."); break; } total += count; } fclose(ofile); oText[total] = '\0'; oTextSize = total; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { if(!SaveDialog1->Execute()) return; Edit2->Text = SaveDialog1->FileName; save(SaveDialog1->FileName); } //--------------------------------------------------------------------------- void save(AnsiString file_name) { FILE *cfile; cfile = fopen(file_name.c_str(), "w"); if(cText == NULL ) exit(1); fwrite(cText, sizeof(char),cTextSize, cfile); fclose(cfile); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { exit(0); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { if(Edit1->Text == "") { MessageBox(NULL,"Âûáåðèòå ôàéë äëÿ øèôðîâàíèÿ!!!","Âíèìàíèå!",0); return; } if(Edit2->Text == "") { MessageBox(NULL,"Âûáåðèòå ôàéë äëÿ ðàñøèôðîâàíèÿ!!!","Âíèìàíèå!",0); return; } if(Edit3->Text == "") { MessageBox(NULL,"íóëåâîå çíà÷åííèå êëþ÷à!!!","Âíèìàíèå!",0); return; } //OemToChar(Edit3->Text.c_str(),Key); unsigned char* a=AnsiString(oText).c_str(); unsigned char* b=AnsiString(oText).c_str(); swap_char(a,b); unsigned char* key=AnsiString(Edit3->Text).c_str(); //unsigned long key_len=strlen(AnsiString(Edit3->Text).c_str()); RC4_Start(key,key_len); } typedef struct { unsigned char i; unsigned char j; unsigned char sbox[SBOX_SIZE]; unsigned char *data; unsigned long data_len; } RC4_Session; //----------------------------------- inline void swap_char(unsigned char *a, unsigned char *b) { unsigned char t; t = a[0]; a[0] = b[0]; b[0] = t; }; //---------------------- void RC4_Start(RC4_Session &session, unsigned char *key, unsigned long key_len) { unsigned long i, j=0; unsigned char kbox[65536]; for (i=0; i<SBOX_SIZE_DIV_16; i++) { session.sbox[i] = (i & 0xFF); session.sbox[i+4096] = (i+4096 & 0xFF); session.sbox[i+8192] = (i+8192 & 0xFF); session.sbox[i+12288] = (i+12288 & 0xFF); session.sbox[i+16384] = (i+16384 & 0xFF); session.sbox[i+20480] = (i+20480 & 0xFF); session.sbox[i+24576] = (i+24576 & 0xFF); session.sbox[i+28672] = (i+28672 & 0xFF); session.sbox[i+32768] = (i+32768 & 0xFF); session.sbox[i+36864] = (i+36864 & 0xFF); session.sbox[i+40960] = (i+40960 & 0xFF); session.sbox[i+45056] = (i+45056 & 0xFF); session.sbox[i+49152] = (i+49152 & 0xFF); session.sbox[i+53248] = (i+53248 & 0xFF); session.sbox[i+57344] = (i+57344 & 0xFF); session.sbox[i+61440] = (i+61440 & 0xFF); } if (key_len > 0) { for (i=0; i<65536; i++) { kbox[i] = key[j]; if (++j == key_len) { j = 0; } } } else { for (i=0; i<65536; i++) { kbox[i] = 0; }//; } j = 0; for (i=0; i<SBOX_SIZE; i++) { j = (j + kbox[i] + session.sbox[i]) & 0xFF; swap_char(&session.sbox[i], &session.sbox[j]); } session.i = 0; session.j = 0; } unsigned char RC4_Gen(RC4_Session &session) { unsigned char xi, a, b; a = session.i; b = session.j; a++; b += session.sbox[a]; swap_char(&session.sbox[a], &session.sbox[b]); xi = session.sbox[b] + session.sbox[a]; xi = session.sbox[xi]; session.i = a; session.j = b; return xi; } |
*.h
Код |
---|
//--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <Buttons.hpp> #include <ComCtrls.hpp> #include <Dialogs.hpp> #include <SysUtils.hpp> #include <iostream> #include <io.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define SBOX_SIZE 65536 #define SBOX_SIZE_DIV_16 4096 //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TButton *Button1; TButton *Button2; TEdit *Edit1; TEdit *Edit2; TOpenDialog *OpenDialog1; TSaveDialog *SaveDialog1; TMemo *Memo1; TButton *Button3; TButton *Button4; TEdit *Edit3; TLabel *Label1; void __fastcall Button1Click(TObject *Sender); void __fastcall Button2Click(TObject *Sender); void __fastcall Button3Click(TObject *Sender); void __fastcall Button4Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; unsigned char a; unsigned char b; unsigned char key; unsigned long key_len; unsigned char Key[16]; char oText[10000000],cText[10000000]; int count, total = 0; size_t oTextSize = 0; size_t cTextSize = 0; void load(AnsiString); void save(AnsiString); void RC4_Start(unsigned char*, unsigned long); inline void swap_char(unsigned char*, unsigned char*); //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif |
Изменено: Олег Дёмин - 19.04.2009 02:45:28