linda34234
-
Postów
9 -
Dołączył
-
Ostatnia wizyta
Odpowiedzi opublikowane przez linda34234
-
-
dobra jest gotowe
borland jest troche dziwny czasami jak dla mnie
-
void __fastcall SourceButtonClick(TObject *Sender)
{
if( SourceOpenDialog->Execute() )
{
SourceEdit->Text = SourceOpenDialog->FileName;
}
}Undefined source open dialog. Problem przy łączeniu kodu. Coś z linkowaniem, jak to naprawić?
-
#define CLEAR 0
#define KEY 1
#define CIPHER 2
char c; //?
char *str; //?
int i;
int clearLength;
int keyLength;
int cipherLength;
int dec;
// these hold the modified ASCII alphabet
// modified from ASCII by eliminating control and arrow characters.
int clearArray[1000];
int keyArray[1000];
int cipherArray[1000];
int clearNumber[1000], keyNumber[1000], cipherNumber[1000];
int mod = 94;
void enter (int text) {
switch (text) {
case CLEAR: {
Main->MemoClearText->Font->Color = clRed;
char* clearText =
new char[Main->MemoClearText->Text.Length() + 1];
strcpy(clearText, Main->MemoClearText->Text.c_str());
clearLength = StrLen(clearText);
// Main->MemoClearNumber->Text = "";
for (int i = 0; i < clearLength; i++) {
// Main->EditClearTextLength->Text = clearLength;
// convert ASCII numbers to modified numerical alphabet
clearNumber = clearText; // convert to values
if (clearNumber > 93) clearNumber--; // elim up arrow
clearNumber -= 32; // elim control chars
// if (i == 0) Main->MemoClearNumber->Text =
// Form1->MemoClearNumber->Text + " " + clearNumber;
// else Main->MemoClearNumber->Text =
// Main->MemoClearNumber->Text + ", " + clearNumber;
}
break;
}
case KEY: {
Main->MemoKeyText->Font->Color = clRed;
char* keyText =
new char[Main->MemoKeyText->Text.Length() + 1];
strcpy(keyText, Main->MemoKeyText->Text.c_str());
keyLength = StrLen(keyText);
// Main->MemoKeyNumber->Text = "";
for (int i = 0; i < keyLength; i++) {
// convert ASCII numbers to numerical alphabet
// Main->EditKeyTextLength->Text = keyLength;
keyNumber = keyText; // convert to values
if (keyNumber > 93) keyNumber--; // elim up arrow
keyNumber -= 32; // elim control chars
// if (i == 0) Form1->MemoKeyNumber->Text =
// Main->MemoKeyNumber->Text + " " + keyNumber;
// else Main->MemoKeyNumber->Text =
// Maimodifiedn->MemoKeyNumber->Text + ", " + keyNumber;
}
break;
}
case CIPHER: {
// Main->MemoCipherText->Font->Color = clRed;
char* cipherText =
new char[Main->MemoCipherText->Text.Length() + 1];
strcpy(cipherText, Main->MemoCipherText->Text.c_str());
cipherLength = StrLen(cipherText);
// Main->MemoCipherNumber->Text = "";
for (int i = 0; i < cipherLength; i++) {
// Main->EditCipherTextLength->Text = cipherLength;
// convert ASCII numbers to modified numerical alphabet
cipherNumber = cipherText; // convert to values
if (cipherNumber > 93) cipherNumber--; // elim up arrow
cipherNumber -= 32; // elim control chars
// if (i == 0) Main->MemoCipherNumber->Text =
// Main->MemoCipherNumber->Text + " " + cipherNumber;
// else Main->MemoCipherNumber->Text =
// Main->MemoCipherNumber->Text + ", " + cipherNumber;
}
break;
}
}
}
//============================================================== EXTRACT TEXT
void extract (int text) {
switch (text) {
case CLEAR: {
Main->MemoClearText->Font->Color = clBlue;
if (cipherLength <= keyLength) {
Main->MemoClearText->Text = "";
// Main->MemoClearNumber->Text = "";
for (int i = 0; i < cipherLength; i++) {
clearNumber = cipherNumber - keyNumber;
if (clearNumber > mod) clearNumber -= mod;
if (clearNumber < 0) clearNumber += mod;
// if (i == 0) Main->MemoClearNumber->Text
// = Main->MemoClearNumber->Text
// + " " + (clearNumber);
// else Main->MemoClearNumber->Text
// = Main->MemoClearNumber->Text
// + ", " + (clearNumber);
// convert to ASCII
clearNumber += 32;
//if (clearNumber > 61) clearNumber++;
if (clearNumber > 93) clearNumber++;
if (clearNumber > 126) clearNumber = 32;
Main->MemoClearText->Text
= Main->MemoClearText->Text + char(clearNumber);
}
}
else Main->MemoClearText->Text = "Key Length Too Short";
break;
}
case KEY: {
Main->MemoKeyText->Font->Color = clBlue;
if (clearLength == cipherLength) {
Main->MemoKeyText->Text = "";
// Main->MemoKeyNumber->Text = "";
for (int i = 0; i < cipherLength; i++) {
keyNumber = cipherNumber - clearNumber;
if (keyNumber > mod) keyNumber -= mod;
if (keyNumber < 0) keyNumber += mod;
// if (i == 0) Main->MemoKeyNumber->Text
// = Main->MemoKeyNumber->Text
// + " " + (keyNumber);
// else Main->MemoKeyNumber->Text
// = Main->MemoKeyNumber->Text
// + ", " + (keyNumber);
// convert to ASCII
keyNumber += 32;
//if (keyNumber > 61) keyNumber++;
if (keyNumber > 93) keyNumber++;
if (keyNumber > 126) keyNumber = 32;
Main->MemoKeyText->Text
= Main->MemoKeyText->Text + char(keyNumber);
}
}
else Main->MemoKeyText->Text = "Clear and Cipher Lengths Unequal";
break;
}
case CIPHER: {
// Main->MemoCipherText->Font->Color = clBlue;
if (clearLength <= keyLength) {
Main->MemoCipherText->Text = "";
// Main->MemoCipherNumber->Text = "";
for (int i = 0; i < clearLength; i++) {
cipherNumber = clearNumber + keyNumber;
if (cipherNumber > mod) cipherNumber -= mod;
if (cipherNumber < 0) cipherNumber += mod;
// if (i == 0) Form1->MemoCipherNumber->Text
// = Form1->MemoCipherNumber->Text
// + " " + (cipherNumber);
// else Main->MemoCipherNumber->Text
// = Main->MemoCipherNumber->Text
// + ", " + (cipherNumber);
// convert to ASCII
cipherNumber += 32;
//if (cipherNumber > 61) cipherNumber++;
if (cipherNumber > 93) cipherNumber++;
if (cipherNumber > 126) cipherNumber = 32;
// Main->MemoCipherText->Text
// = Main->MemoCipherText->Text + char(cipherNumber);
}
}
else Main->MemoKeyText->Text = "Key Length Too Short";
break;
}
}
}
void Crypt2(char *inp, DWORD inplen, char* key)
{
enter(CLEAR);
enter(KEY);
extract(CIPHER);
//poinformuj o postępie
// if( x & 0x0000FFFF ) //ogranicz częstość aktualizacji informacji o postępie
// {
Application->ProcessMessages(); //pozwól na przesuwanie okna itp.
// Main->CGauge2->Progress = 100 * (float)x/(float)lSize;
Main->Update();
// }
}
// Main->CGauge2->Progress = 100;
//}
void Crypt3(char *inp, DWORD inplen, char* key)
{
enter(CIPHER);
enter(KEY);
extract(CLEAR);
//poinformuj o postępie
// if( x & 0x0000FFFF ) //ogranicz częstość aktualizacji informacji o postępie
{
Application->ProcessMessages(); //pozwól na przesuwanie okna itp.
// Main->CGauge2->Progress = 100 * (float)x/(float)lSize;
Main->Update();
}
}
//Main->CGauge2->Progress = 100;
//}
void __fastcall TMain::ClearClick(TObject *Sender)
{
Memo->Clear();
}
void __fastcall TMain::btnOpen2Click(TObject *Sender)
{
btnOpen2->Enabled = false;
//CGauge2->Progress = 0;
if(OpenDialog2->Execute())
{
FILE *pFileIn = fopen(OpenDialog2->FileName.c_str(), "rb");
if(!pFileIn)
{
Application->MessageBox("Problem z otwieraniem pliku!", Main->Caption.c_str(), MB_ICONEXCLAMATION);
btnOpen2->Enabled = true;
return;
}
// obtain file size.
fseek (pFileIn , 0 , SEEK_END);
lSize = ftell (pFileIn);
rewind (pFileIn);
// allocate memory to contain the whole file.
char* buffer = (unsigned char*) malloc (lSize);
if (buffer == NULL)
{
Application->MessageBox("Za mało pamięci!", Main->Caption.c_str(), MB_ICONEXCLAMATION);
fclose(pFileIn);
btnOpen2->Enabled = true;
return;
}
// copy the file into the buffer.
fread (buffer,1,lSize, pFileIn);
Crypt2(buffer, lSize, PASSWORD);
if(SaveDialog2->Execute())
{
FILE *pFileOut = fopen(SaveDialog2->FileName.c_str(), "wb"); //file will be overwritten
if(pFileOut)
{
fwrite(buffer, lSize, 1, pFileOut);
}
else
Application->MessageBox("Problem ze stworzeniem pliku końcowego!", Main->Caption.c_str(), MB_ICONEXCLAMATION);
if(pFileOut) fclose (pFileOut);
}
if(pFileIn) fclose (pFileIn);
if(buffer) free (buffer);
}
btnOpen2->Enabled = true;
}
//---------------------------------------------------------------------------
//===========================================================================
// DEFINES and VARIABLES
//===========================================================================
void __fastcall TMain::btnOpen3Click(TObject *Sender)
{
btnOpen3->Enabled = false;
// CGauge2->Progress = 0;
if(OpenDialog2->Execute())
{
FILE *pFileIn = fopen(OpenDialog2->FileName.c_str(), "rb");
if(!pFileIn)
{
Application->MessageBox("Problem z otwieraniem pliku!", Main->Caption.c_str(), MB_ICONEXCLAMATION);
btnOpen3->Enabled = true;
return;
}
// obtain file size.
fseek (pFileIn , 0 , SEEK_END);
lSize = ftell (pFileIn);
rewind (pFileIn);
// allocate memory to contain the whole file.
char* buffer = (unsigned char*) malloc (lSize);
if (buffer == NULL)
{
Application->MessageBox("Za mało pamięci!", Main->Caption.c_str(), MB_ICONEXCLAMATION);
fclose(pFileIn);
btnOpen->Enabled = true;
return;
}
// copy the file into the buffer.
fread (buffer,1,lSize, pFileIn);
Crypt3(buffer, lSize, PASSWORD);
if(SaveDialog2->Execute())
{
FILE *pFileOut = fopen(SaveDialog2->FileName.c_str(), "wb"); //file will be overwritten
if(pFileOut)
{
fwrite(buffer, lSize, 1, pFileOut);
}
else
Application->MessageBox("Problem ze stworzeniem pliku końcowego!", Main->Caption.c_str(), MB_ICONEXCLAMATION);
if(pFileOut) fclose (pFileOut);
}
if(pFileIn) fclose (pFileIn);
if(buffer) free (buffer);
}
btnOpen3->Enabled = true;
}
//--------------------------------------------------------------------------- -
[Linker Error] Unresolved external '__fastcall TMain::OpenPictureDialogPlainClick(System::TObject *)' referenced from C:USERSTWIERDZA GIERDESKTOPPRIVYCRYPT-WIN32-SRC2_5PRIVYCRYPTUNIT1.OBJ
A to co?W tym programie linkuje czasami klasy i trzeba je wstawić drugi raz, wtedy błąd znika. Kasowanie pliku .obj nie pomaga.
Trzeba mi jeszcze jakiś algorytm szyfrujący pod Borlanda. Ktoś może się tym bawił? Potrafi coś zrobić, niech się odzywa. Perspektywa długiej współpracy.
void Crypt2(char *inp, DWORD inplen, char* key)
{
//we will consider size of sbox 256 bytes
//(extra byte are only to prevent any mishep just in case)
char Sbox[257], Sbox2[257];
unsigned long i, j, t, x;
char temp , k;
i = j = k = t = x = 0;
temp = 0;
//always initialize the arrays with zero
ZeroMemory(Sbox, sizeof(Sbox));
ZeroMemory(Sbox2, sizeof(Sbox2));
//initialize sbox i
for(i = 0; i < 256U; i++)
{
Sbox = (char)i;
}
j = 0;
//initialize the sbox2 with user key
for(i = 0; i < 256U ; i++)
{
if(j == strlen(key))
{
j = 0;
}
Sbox2 = key[j++];
}
j = 0 ; //Initialize j
//scramble sbox1 with sbox2
for(i = 0; i < 256; i++)
{
j = (j + (unsigned long) Sbox + (unsigned long) Sbox2) % 256U ;
temp = Sbox;
Sbox = Sbox[j];
Sbox[j] = temp;
}
i = j = 0;
for(x = 0; x < inplen; x++)
{
//increment i
i = (i + 1U) % 256U;
//increment j
j = (j + (unsigned long) Sbox) % 256U;
//Scramble SBox #1 further so encryption routine will
//will repeat itself at great interval
temp = Sbox;
Sbox = Sbox[j] ;
Sbox[j] = temp;
//Get ready to create pseudo random byte for encryption key
t = ((unsigned long) Sbox + (unsigned long) Sbox[j]) % 256U ;
//get the random byte
k = Sbox[t];
//xor with the data and done
inp[x] = (inp[x] ^ k);
//poinformuj o postępie
if( x & 0x0000FFFF ) //ogranicz częstość aktualizacji informacji o postępie
{
Application->ProcessMessages(); //pozwól na przesuwanie okna itp.
Main->CGauge2->Progress = 100 * (float)x/(float)lSize;
Main->Update();
}
}
Main->CGauge2->Progress = 100;
}
Może jakaś wariacja na ten temat? Co tu zmienić, aby był lepszy? -
Chodziło o to, że t_str jest stare. Używa się teraz c_str.
Chciałbym zrozumieć ten kod:
//================================================================ ENTER TEXT
void enter (int text) {
switch (text) {
case CLEAR: {
Main->MemoClearText->Font->Color = clRed;
char* clearText =
new char[Main->MemoClearText->Text.Length() + 1];
strcpy(clearText, Main->MemoClearText->Text.c_str());
clearLength = StrLen(clearText);
Main->MemoClearNumber->Text = "";
for (int i = 0; i < clearLength; i++) {
Main->EditClearTextLength->Text = clearLength;
// convert ASCII numbers to modified numerical alphabet
clearNumber = clearText; // convert to values
if (clearNumber > 93) clearNumber--; // elim up arrow
clearNumber -= 32; // elim control chars
if (i == 0) Form1->MemoClearNumber->Text =
Form1->MemoClearNumber->Text + " " + clearNumber;
else Form1->MemoClearNumber->Text =
Form1->MemoClearNumber->Text + ", " + clearNumber;
}
break;
}
case KEY: {
Form1->MemoKeyText->Font->Color = clRed;
char* keyText =
new char[Form1->MemoKeyText->Text.Length() + 1];
strcpy(keyText, Form1->MemoKeyText->Text.t_str());
keyLength = StrLen(keyText);
Form1->MemoKeyNumber->Text = "";
for (int i = 0; i < keyLength; i++) {
Form1->EditKeyTextLength->Text = keyLength;
// convert ASCII numbers to modified numerical alphabet
keyNumber = keyText; // convert to values
if (keyNumber > 93) keyNumber--; // elim up arrow
keyNumber -= 32; // elim control chars
if (i == 0) Form1->MemoKeyNumber->Text =
Form1->MemoKeyNumber->Text + " " + keyNumber;
else Form1->MemoKeyNumber->Text =
Form1->MemoKeyNumber->Text + ", " + keyNumber;
}
break;
}
case CIPHER: {
Form1->MemoCipherText->Font->Color = clRed;
char* cipherText =
new char[Form1->MemoCipherText->Text.Length() + 1];
strcpy(cipherText, Form1->MemoCipherText->Text.t_str());
cipherLength = StrLen(cipherText);
Form1->MemoCipherNumber->Text = "";
for (int i = 0; i < cipherLength; i++) {
Form1->EditCipherTextLength->Text = cipherLength;
// convert ASCII numbers to modified numerical alphabet
cipherNumber = cipherText; // convert to values
if (cipherNumber > 93) cipherNumber--; // elim up arrow
cipherNumber -= 32; // elim control chars
if (i == 0) Form1->MemoCipherNumber->Text =
Form1->MemoCipherNumber->Text + " " + cipherNumber;
else Form1->MemoCipherNumber->Text =
Form1->MemoCipherNumber->Text + ", " + cipherNumber;
}
break;
}
}
}
Z tego co widzę jest pole klucza, pole do wprowadzenia tekstu do szyfrowania i pole wyniku. Zgadza się?
Dalej - jest problem ze zmiennymi. Nie bardzo rozumiem dlaczego pojawia się błąd przy MemoClearNumber - co to właściwie jest? MemoCipherText to rozumiem jest pole do wprowadzenia pierwszej treści?
To jest algorytm https://web.duke.edu/isis/gessler/borland/vigenere94.txt.Płacę za pomoc...
Płacę za pomoc...
Płacę za pomoc...
#define CLEAR 0
#define KEY 1
#define CIPHER 2
char c;
char *str;
int i;
int clearLength;
int keyLength;
int cipherLength;
int dec;
int clearArray[1000];
int keyArray[1000];
int cipherArray[1000];
// this sets up bitmap graphics variables to hold the pictures.
Graphics::TBitmap* pixPlain = new Graphics::TBitmap();
Graphics::TBitmap* pixKey = new Graphics::TBitmap();
Graphics::TBitmap* pixCrypto = new Graphics::TBitmap();
RGBTRIPLE* t;
BYTE myByte;
AnsiString plainText, KeyText, cryptoText;
// cycle counts the steps in a 256 color circuit
int cycle = 0;
// step counts the steps in the alter .bmp loop
int step;
bool stop = false;
int pixel = 0;
int row, column;
int times;
//
// FUNCTIONS
//===========================================================================
//================================================================ ENTER MEMO
void enter (int text) {
switch (text) {
case CLEAR: {
Main->MemoClear->Font->Color = clBlack;
char* clearText = new char[ Main->MemoClear->Text.Length() + 1 ];
strcpy( clearText, Main->MemoClear->Text.c_str() );
clearLength = StrLen(clearText);
Main->MemoClearASCII->Text = "";
for (int i = 0; i < clearLength; i++) {
Main->EditClearLength->Text = clearLength;
char x = clearText;
Main->MemoClearASCII->Text =
Form1->MemoClearASCII->Text + " " + IntToStr(x - 31);
clearArray = clearText - 31;
}
break;
}
case KEY: {
Main->MemoKey->Font->Color = clBlack;
char* keyText = new char[ Main->MemoKey->Text.Length() + 1 ];
strcpy( keyText, Form1->MemoKey->Text.c_str() );
keyLength = StrLen(keyText);
Main->MemoKeyASCII->Text = "";
for (int i = 0; i < keyLength; i++) {
Main->EditKeyLength->Text = keyLength;
char x = keyText;
Main->MemoKeyASCII->Text =
Main->MemoKeyASCII->Text + " " + IntToStr(x - 31);
keyArray = keyText - 31;
}
break;
}
case CIPHER: {
Main->MemoCipher->Font->Color = clBlack;
char* cipherText
= new char[ Main->MemoCipher->Text.Length() + 1 ];
Jest problem z EditClearLength? Dlaczego nie działa? Czy jest jakaś inna wersja tego polecenia? Borland 6 C++![C++ Error] Unit1.cpp(320): E2090 Qualifier 'Main' is not a class or namespace name
?Jak wczytać obraz z folderu do Image po wybraniu przycisku?
Teraz doszedłem do tego, ale nie działa ogólnie jak trzeba. Muszę to przebudować.
-
[C++ Error] Unit1.cpp(93): E2316 't_str' is not a member of 'AnsiString'
Co to za problem? Jak rozwiązać? -
milo jakby ktos doradzil bilioteke
ja moge zrobic to sam, ale nie wiem czy sie wyrobie - o to chodzi
-
czy ktos potrafi sie tym zajac?
posiadam skrypty szyfrowania np rot13 czy atbash_c
jak to przepisac na borlanda?
moge zaplacic za pomoc
zrobilem aplikacje, potrzebuje podpiac kod szyfrowania pliku txt pod przyckiski
beda 3 algorytmy szyfrowania pliku txt
projekt do wgladu
moj email lukgro1991@wp.pl

Czy w internecie brakuje miejsca dla biznesmena?
w Ośla łączka
Opublikowano
Czy portal randkowy dla biznesu, czy oferty współpracy są trudnodostępne?
Czy biznesmen posiada czas na gry komputerowe, czy randki w internecie?
Czy lubi taki styl życia, przebywać w internecie?