#include <vcl.h>
#include <math.h>
#pragma hdrstop
#include "Unit1.h"
//------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int iDLINA, iDLTEXT;
char * chRes, * chTEXT;
//------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//------------------------------------------------------------------------
/*---------------Кодирование файла формата TXT---------------------*/
void __fastcall TForm1::Button1Click(TObject *Sender)
{
OpenDialog1->Execute();
TFileStream * FirstFi = new TFileStream(OpenDialog1->FileName,fmOpenRead); // Cоздаём поток для работы с выбранным файлом
iDLTEXT = FirstFi->Size; // Размер файла
chTEXT = new char[iDLTEXT]; // Создание символьного массива размером с файл
FirstFi->ReadBuffer(chTEXT,iDLTEXT); // Запись файла в массив из потока
FirstFi->Free(); //Освобождение потока
TFileStream * Fi=
new TFileStream(ExtractFileDir(Application->ExeName)+"\\Vacabulary.txt",fmOpenRead); // поток для работы с файлом Vacabulary.txt в котором записаны различные символы (т.е. алфавит), для кодирования файла. Например: ПАЛА4дgfjbklroswdтчщшцфийэюьъ.
iDLINA = Fi->Size;
chRes = new char[iDLINA];
Fi->ReadBuffer(chRes,iDLINA);
Fi->Free();
int iSum, iSumm=0;
for(int j=1;j<(iDLINA+1);iSumm+=(unsigned char)chRes[j++]) // Извратил немного код :)
iSum=iSumm%256; // Вобщем получаем ключ алфавита
for(int i=0;i<(iDLTEXT+1);i++)
chTEXT = div((unsigned char)chTEXT+iSum,256).rem; // непосредственно кодировка текста
int iFile1Handle = FileCreate(ExtractFileDir(Application->ExeName)+"\\Files for C and EC\\CODINGTEXT.txt"); //Создание файла
FileWrite(iFile1Handle, chTEXT, iDLTEXT); // Запись в файл кодированного текста
FileClose(iFile1Handle); // ноу коммент
}
//------------------------------------------------------------------------
/*--------------Декодирование файла формата TXT--------------------*/
void __fastcall TForm1::Button2Click(TObject *Sender)
{
OpenDialog1->Execute();
TFileStream * FirstFi = new TFileStream(OpenDialog1->FileName,fmOpenRead);
iDLTEXT = FirstFi->Size;
chTEXT = new char[iDLTEXT];
FirstFi->ReadBuffer(chTEXT,iDLTEXT);
FirstFi->Free();
TFileStream * Fi=
new TFileStream(ExtractFileDir(Application->ExeName)+"\\Vacabulary.txt",fmOpenRead);
iDLINA = Fi->Size;
chRes = new char[iDLINA];
Fi->ReadBuffer(chRes,iDLINA);
Fi->Free();
int iSum, iSumm=0;
for(int j=1;j<(iDLINA+1);iSumm+=(unsigned char)chRes[j++])
iSum=iSumm%256;
for(int i=0;i<(iDLTEXT+1);i++)
{
if ((unsigned char)chTEXT<=iSum) chTEXT = (256+(unsigned char)chTEXT)-iSum;
else chTEXT = (unsigned char)chTEXT-iSum;
}
int iFile2Handle = FileCreate(ExtractFileDir(Application->ExeName)+"\\Files for C and EC\\ECODINGTEXT.txt");
FileWrite(iFile2Handle, chTEXT, iDLTEXT);
FileClose(iFile2Handle);
}
//------------------------------------------------------------------------
/*-----------------Завершение работы программы----------------------*/
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Application->Terminate(); // Завешение работы приложения
}
//------------------------------------------------------------------------
Шифрование txt
Программка записывает в txt слова через запятую, а другая программмка берёт эти слова из этого тектовика. Нужно зашифровать текст таким образом, чтобы его потом можно было прочитать другой программкой.. как осуществить шифрование и последующее дешифрование данных?Метод абсолютно любой, главное чтобы визуально эти данные в текстовике не читались.... Помогите пожалуйста! Направьте в нужное русло... Желательно сходничек или тыкните в тему с этим. Я искал ничего не нашёл... Буду благодарен!!!
В разделе "Исходники" сайта есть довольно много примеров шифровальных программ:
http://sources.codenet.ru/?cid=17
[COLOR="Silver"]А то что там насчет взлома, ИМХО надо бы оттуда удалить.[/COLOR]
В данном коде приведён пример циклического кодирования, причём я тут использую таблицу АСКИ, соответствие символов их числовым значениям.
Можно записать код каждого символа в двоичной системе. :D