Стеганография - скрывать, а затем извлекать любой файл внутри текстового файла - Free Pascal
Формулировка задачи:
Нужно написать программу, которая позволяет скрывать, а затем извлекать любой файл внутри текстового файла.
Задаем файл: первый - куда надо прятать, второй - который надо прятать, третий - где будет результат.
Если очередной скрываемый бит файла равен 1, то в конец очередной строки текстового файла добавляем пробел.
Если равен 0, то ничего не добавляем.
и наоборот - расшифровать файл
Так как же зашифровать и расшифровать файл?
Есть примерно такая процедура для того, чтобы зашифровать:
Но как всё это реализовать не понимаю.
procedure Encode(S: String); var T1 : Text; I, J : Integer; begin assign(T1, "text.txt"); assign(T2, "code.txt"); reset(T1);rewrite(T2); for I := 1 to Length(S)*8 do if not Eof(T1) then begin readln(T1, S1); while S1[lengh(S1)] = " " do delete(S1, lengh(S1), 1); J := 1 shl (I mod 8); if ord(S[I div 8]) and J <> 0 then S1 := S1 + ' '; writeln(T2,S1); end else begin break; writeln("Small input file"); end; close(T1);close(T2); end; А расшифровать: procedure Decode(var S: String); var T1, T2 : Text; I, J : Integer; begin assign(T1, "code.txt"); reset(T1); J := 0; I := 0; S := ""; if not Eof(T1) then begin readln(T1, S1); if S1[Length(S1)] = " " then J := J shr 1 + 128 else J := J shr 1; inc(I); If I mod 8 = 0 then begin S := S + chr(J); J := 0; end; end; close(T1); end;
Решение задачи: «Стеганография - скрывать, а затем извлекать любой файл внутри текстового файла»
textual
Листинг программы
<количество кодируемых символов> *8?