Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Delphi, закодировать файл

Автор: frichi
Дата сообщения: 04.03.2007 07:51
Доброго системного времени господа, прошу помощи в написании алгоритма, сильно не пинать сам не программист, но нужно очень и вчера
Задача такая, есть текстовый файл File.txt из которого я построчно читаю информацию для программы, нужно чтоб пользователь открыв этот файл не смог увидеть в нем информацию (увидел бы там какие нибудь цифры, или бессвязный набор букв). Собственно в идеале будет программа которая этот файл закодирует и программа которая его правильно раскодирует....
Прошу помощи, идеи, куски алгоритмов приветствуются
Автор: extasy
Дата сообщения: 04.03.2007 08:14
Для Д7 можно просто взять с Indy Misc компоненты IdEncoderMIME, IdEncoderUUE или IdEncoderXXE и кодировать ими файл


Код: EncoderMIME.Encode()
Автор: Tantos
Дата сообщения: 05.03.2007 07:44
см. TpLockBox.
Автор: vserd
Дата сообщения: 05.03.2007 09:27
frichi
Если требование только к тому чтобы пользователь видел подобие бинарника, тогда
function Encode(S:String):String;
var i:Integer;
begin
Result:='';
for i:=1 to Length(S) do Result:=Result+Chr(255-Ord(S[i]));
end;
и вызывай :
для кодирвания tmpStr := Encode('Test Str');
для раскодирования tmpStr2 := Encode(tmpStr);

Банально, но цель достигнута. Дурако устойчивость есть, крипкостойкости нет вообще.
Только совет, у файла смени расширение с .txt, для того чтобы пользователь не удалил его по ошибке.
Автор: Aleksi13
Дата сообщения: 05.03.2007 19:14
Ну или посимвольно при помощи банального xor'a:
function codeit(char ch) : char;
var num = ...
begin
result := ch xor num;
end;
Автор: akaGM
Дата сообщения: 06.03.2007 10:57

Цитата:
Ну или посимвольно при помощи банального xor'a:

чуть более т.к. забыл дописать...

Код:
var num: char;

procedure start_my_strong_crypto_engine; // гы
begin
num := char(1 + random(255));
end;


function codeit(ch: char) : char;
begin
result := char(byte(ch) xor byte(num));
end;

function decodeit(ch: char): char;
begin
result := char(byte(ch) xor byte(num));
end;
Автор: Jokerjar
Дата сообщения: 06.03.2007 11:04
akaGM, ну на счет random ты погорячился. При повторном запуске проги вряд ли уже расшифруешь то, что зашифровал ранее. Нужно фиксированный алоритм. А так, дерзай (это уже frichi'у)
Автор: akaGM
Дата сообщения: 06.03.2007 11:16
Jokerjar
неа...

Цитата:
а сам num писать первым чаром в кодируемый файл... или последним...

именно для обратимости я это и написал...
тем более я же не законченный вариант предлагаю...

шифруем
---

init_gen_random_num //генерим num
encode
done


дешифруем
---
init_get_num_from_inputfile //
decode
done

-------

во!

Код:
rar a -p- -hppassword filename.bin filename.txt
rar x -p- -hppassword filename.bin filename.txt

Страницы: 1

Предыдущая тема: CreateThread помогите разобраться с передачей параметра


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.