Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Шифрование текста 2

Delphi , Синтаксис , Шифрование

Шифрование текста 2


{$I-,R-}

Unit Crypter;

interface
Uses Objects;

procedure EnCrypt(var Pntr: Array of Char; ArrLen: Word; password: string);
{ - Закpиптовать блок }
procedure DeCrypt(var Pntr: Array of Char; ArrLen: Word; password: string);
{ - Раскиптовать блок }

procedure EnCryptStream(var st: tStream; Password: String);
{ - Закpиптовать поток }
procedure DeCryptStream(var st: tStream; Password: String);
{ - Раскиптовать поток }

implementation

procedure EnCrypt(var Pntr: Array of Char; ArrLen:Word; password: string);
var
  len,pcounter: byte;
  x:Word;
begin
  len := length(password) div 2;
  pcounter := 1;
  for x:=0 to ArrLen-1 do begin
    Pntr[x] := chr(ord(password[pcounter]) + ord(Pntr[x]) + len);
    inc(pcounter);
    if pcounter > length(password) then pcounter := 1;
  end;
end;

procedure DeCrypt(var Pntr: Array of Char; ArrLen:Word; password: string);
var
  len,pcounter: byte;
  x:Word;
begin
  len := length(password) div 2;
  pcounter := 1;
  for x:=0 to ArrLen-1 do begin
    Pntr[x] := chr(ord(Pntr[x]) - ord(password[pcounter]) - len);
    inc(pcounter);
    if pcounter > length(password) then pcounter := 1;
  end;
end;

type
 pBuffer = ^tBuffer;
 tBuffer = Array[1..$FFFF] of Char;

procedure EnCryptStream(var st: tStream; Password: String);
 var
  buf: pBuffer;
  StSize, StPos, p: Longint;
 begin
  if (@st=nil) or (Password='') then exit;
  New(buf);
  StPos:=st.GetPos;
  StSize:=st.GetSize;
  st.Reset;
  st.Seek(0);
  repeat
   p:=st.GetPos;
   if SizeOf(Buf^)> St.GetSize-St.GetPosthen st.Read(buf^,St.GetSize-St.GetPos)
else st.Read(buf^,SizeOf(Buf^));
   EnCrypt(buf^,SizeOf(buf^),password);
   st.Reset;
   st.Seek(p);
   st.Write(buf^,SizeOf(Buf^));
  until (St.GetSize=St.GetPos);
  st.Seek(StSize);
  st.Truncate;
  st.Seek(StPos);
  Dispose(buf);
 end;

procedure DeCryptStream(var st: tStream; Password: String);
 var
  buf: pBuffer;
  StSize, StPos, p: Longint;
 begin
  if (@st=nil) or (Password='') then exit;
  New(buf);
  StPos:=st.GetPos;
  StSize:=st.GetSize;
  st.Reset;
  st.Seek(0);
  repeat
   p:=st.GetPos;
   if SizeOf(Buf^)> St.GetSize-St.GetPosthen st.Read(buf^,St.GetSize-St.GetPos)
else st.Read(buf^,SizeOf(Buf^));
   DeCrypt(buf^,SizeOf(buf^),password);
   st.Reset;
   st.Seek(p);
   st.Write(buf^,SizeOf(Buf^));
  until (St.GetSize=St.GetPos);
  st.Seek(StSize);
  st.Truncate;
  st.Seek(StPos);
  Dispose(buf);
 end;

end.

Статья Шифрование текста 2 раздела Синтаксис Шифрование может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Шифрование ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
19.04.2024 06:57:15/0.0043869018554688/2