Есть обычный текстовый файл. Есть две программы:чтение файла и создание файла. Нужно чтобы одна программа умела шифровать что создала, а другая читать шифрованный файл. Мне не нужен сложный алгоритм. Очень простенько. Просто еще ни разу с этим не связывался. Пишу на Delphi.
ну если очень просто и не надёжно, то можно по тупому xor'ить данные из файла с каким-то одному тебе известным ключом. А вообще если нужна надёжность лучше использовать готовые проверенные библиотеки и алгоритмы
Когда начинал изучать дельфина, все просто и понятно =) Если нужны комменты, могу написать. Code: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ComCtrls, jpeg, ExtCtrls, XPMan; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; MainMenu1: TMainMenu; Button2: TButton; N1: TMenuItem; N2: TMenuItem; N5: TMenuItem; CheckBox1: TCheckBox; ProgressBar1: TProgressBar; Edit3: TEdit; Edit4: TEdit; Image1: TImage; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; XPManifest1: TXPManifest; Label5: TLabel; Label7: TLabel; Label6: TLabel; procedure N5Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.N5Click(Sender: TObject); begin close; end; procedure TForm1.Button1Click(Sender: TObject); var f:file of byte; f2,f3:textfile; i,k,n,k2,ll,l,th,g,razmer,peremen,keyl:integer; b:byte; s,key,keyp:string; p,sum:real; begin g:=0; key:=Edit3.Text ; keyp:=Edit4.Text; if (key=keyp)and (Key<>'') then begin s:=Edit1.text; if s<>'' then begin key:=Edit3.Text ; keyp:=Edit4.Text; keyl:=length(key); k:=length(s); k2:=pos(s,'.'); Delete(s,k2,3); s:=s+'.crpt'; AssignFile(f,Edit1.text); AssignFile(f2,s ); Reset(f); ReWrite(f2); razmer:=FileSize(f); ProgressBar1.Max:=razmer; peremen:=1; While not eof(f) do begin if g=2147483646 then g:=0; If peremen >= keyl then peremen:=1; Read(f,b); k:=ord(b); th:= k xor ( (ord(key[peremen]) + g)); Write(f2,chr(th)); ProgressBar1.StepBy(1); peremen:=peremen+1; g:=g+1; end; Edit2.text:=s; ShowMessage('Файл зашифрован'); ProgressBar1.Position:=0; CloseFile(f); CloseFile(f2); if CheckBox1.Checked=true then Erase(f); CheckBox1.Checked:=false; Edit1.Text:=''; Edit2.Text:=''; Edit3.Text:=''; Edit4.Text:=''; OpenDialog1.FileName:=''; end; end; end; procedure TForm1.N2Click(Sender: TObject); var s:string; begin OpenDialog1.Execute ; s:=OpenDialog1.FileName ; Edit1.Text:=s; end; procedure TForm1.Button2Click(Sender: TObject); var SR:TSearchRec; a:TfileStream; q:byte; s,s2,s3,key,keyp:string; n,t,k,i,razmer,g,peremen,keyl:integer; f3:textfile; begin g:=0; s:=OpenDialog1.FileName ; s2:=Copy(s,k-4,5); if (s2<>'.crpt')and (s2<>'') then ShowMessage('Не является зашифрованным файлом!') else begin key:=Edit3.Text ; keyp:=Edit4.text; if (key=keyp)and (key<>'') then begin if s<>'' then begin keyl:=length(key); a:=TfileStream.Create(s,fmOpenRead); s3:=s; razmer:=a.Size; ProgressBar1.Max:=razmer; k:=length(s); Delete(s,k-4,5); s2:=s; AssignFile(f3,s2); ReWrite(f3); peremen:=1; for i:=1 to razmer do begin if g=2147483646 then g:=0; If peremen >= keyl then peremen:=1; a.Read(q,1); t:= q xor ( (ord(key[peremen]) +g)); a.Seek(0,1) ; Write(f3,chr(t)); ProgressBar1.StepBy(1); peremen:=peremen+1; g:=g+1; end; CloseFile(f3); FileClose(0); a.Destroy; Edit2.text:=s; if CheckBox1.Checked=true then begin DeleteFile(OpenDialog1.FileName); end; CheckBox1.Checked:=false; ShowMessage('Файл расшифрован!'); ProgressBar1.Position:=0; Edit1.Text:=''; Edit2.Text:=''; Edit3.Text:=''; Edit4.Text:=''; OpenDialog1.FileName; end; end; end; end; end. Подкорректирован код и ссылка на exe Code: http://depositfiles.com/files/2266774
У меня используется симметричный метод - гаммирование, с при помощи операции xor, ну и пара действий над входным ключом.