Посмотрите
на заголовок. Написать такой криптовщик НА ЧЕМ-УГОДНО, лишь бы оно
поддерживало работу с файлами (С, С++, .NET, Delphi, Kylix, Borland
C++Builder, Paskal, Visual Basic, Visual C++, QBasic и.т.д.) Итак,
алгоритм:
1. Открываем файл для чтения //файл, который требуется зашифровать
2. Открываем файл для записи //тут будет храниться
информация в зашифрованном виде
//Вам понадобится переменная типа byte (от 0
до 255)
3. Объявляем цикл >> пока не
конец файла (см.1)
3.1. Считываем 1 байт
3.2. Изменяем его в соответствии с ключом
3.3. Записываем байт в файл (см.2)
Повторяем цикл
4. Закрываем оба файла
Тут не учитываются ошибки (в таком случае алгоритм был бы на порядок больше).
Приведу пример шифрации на Delphi (или Kylix - для Linux):
function lca_crypt(fs,fp,key:string):byte;
var fil,ini:file of byte; b:byte;
begin
assignfile(fil,fs);
reset(fil);
assignfile(ini,fp);
rewrite(ini);
while not eof(fil) do begin
read(fil, b);
b:=b+sred(key); //допустим, среднее арифметическое ключа
write(ini, b);
end;
closefile(fil);
closefile(ini);
end;
В таком случае, дешифровка будет выполнятся следующей функцией:
function lca_decrypt(fs,fp,key:string):byte;
var fil,ini:file of byte; b:byte;
begin
assignfile(fil,fs);
reset(fil);
assignfile(ini,fp);
rewrite(ini);
while not eof(fil) do begin
read(fil, b);
b:=b-sred(key); //здесь уже не "+" а "-"
write(ini, b);
end;
closefile(fil);
closefile(ini);
end;
Поняли, чем шифровка отличается от дешифровки? Если нет, то поясню на примере:
шифровка: (b + sred(key)) xor 17
дешифровка: (b xor 17) -
sred(key)
Теперь понятно? При дешифровке выполняются действия обратные тем, что
выполнялись при шифровке (т.е. "+" сменяется на "-",
"-" на "+" и.т.д.), причем выполняются в обратном
порядке (при шифровке (b+x)+y, то при дешифровке - (b-y)-x)
На C++Builder будет выглядеть примерно так:
TFileStream *fil = new TFileStream(fs,fmOpenRead);
TFileStream *ini = new TFileStream(fp,fmOpenWrite);
byte b = 0;
while(!eof(fil))
{
fil->Read(b, 1);
b=b+sred(key);
ini->Write(b, 1);
}
delete fil;
delete ini;
Да и (за мелкими изменениями) на С++ точно также.
Найти исполняемые файлы можно тут (для Windows)
и тут (для Linux)