Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  151

•  TDictionary Custom Sort  3 331

•  Fast Watermark Sources  3 081

•  3D Designer  4 840

•  Sik Screen Capture  3 334

•  Patch Maker  3 547

•  Айболит (remote control)  3 652

•  ListBox Drag & Drop  3 007

•  Доска для игры Реверси  81 657

•  Графические эффекты  3 936

•  Рисование по маске  3 242

•  Перетаскивание изображений  2 622

•  Canvas Drawing  2 745

•  Рисование Луны  2 573

•  Поворот изображения  2 180

•  Рисование стержней  2 168

•  Paint on Shape  1 568

•  Генератор кроссвордов  2 233

•  Головоломка Paletto  1 767

•  Теорема Монжа об окружностях  2 223

•  Пазл Numbrix  1 685

•  Заборы и коммивояжеры  2 056

•  Игра HIP  1 281

•  Игра Go (Го)  1 228

•  Симулятор лифта  1 473

•  Программа укладки плитки  1 216

•  Генератор лабиринта  1 546

•  Проверка числового ввода  1 363

•  HEX View  1 496

•  Физический маятник  1 358

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Алгоритм 128-битного шифрования (TEA)



Автор: Valts Silaputnins

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Алгоритм 128-битного шифрования (TEA)

Зависимости: system
Автор:       Valts Silaputnins, valts@velns.org
Copyright:   Valts Silaputnins
Дата:        19 августа 2002 г.
***************************************************** }

unit ucrypt;

interface
type
  TEAKey = array[0..3] of cardinal;

//Use 64-bit aligned data size (8,16...) or else some data will be left unencrypted!
procedure TEA_Encode(Input, Output: pointer; size: integer; key: TEAKey);
procedure TEA_Decode(Input, Output: pointer; size: integer; key: TEAKey);

implementation
type
  TEAData = array[0..1] of cardinal;
  PTEAKey = ^TEAKey;
  PTEAData = ^TEAData;

procedure TEA_Cipher(v: PTEAData; var w: PTEAData; k: PTEAKey);
var
  y, z, sum, delta, n: Cardinal;
begin
  y := (v)[0];
  z := (v)[1];
  sum := 0;
  delta := $9E3779B9;
  n := 32;

  while (n > 0) do
  begin
    inc(y, (z shl 4 xor z shr 5) + z xor sum + (k)[sum and 3]);
    inc(sum, delta);
    inc(z, (y shl 4 xor y shr 5) + y xor sum + (k)[sum shr 11 and 3]);
    dec(n);
  end;

  (w)[0] := y;
  (w)[1] := z;
end;

procedure TEA_DeCipher(v: PTEAData; var w: PTEAData; k: PTEAKey);
var
  y, z, sum, delta, n: Cardinal;
begin

  y := v[0];
  z := v[1];
  sum := $0C6EF3720;
  delta := $9E3779B9;
  n := 32;

  while (n > 0) do
  begin
    dec(z, (y shl 4 xor y shr 5) + y xor sum + k[sum shr 11 and 3]);
    dec(sum, delta);
    dec(y, (z shl 4 xor z shr 5) + z xor sum + k[sum and 3]);
    dec(n);
  end;

  w[0] := y;
  w[1] := z;

end;

procedure TEA_EnDec(encode: boolean; Input, Output: pointer; size: integer; key:
  TEAKey);
var
  DataIn, DataOut: TEAData;
  DOut: PTEAData;
  i, sz: integer;
begin
  DOut := @DataOut;
  sz := (size shr 3) shl 3;
  i := 0;
  repeat
    DataIn[0] := Cardinal((pointer(Cardinal(Input) + Cardinal(i)))^);
    DataIn[1] := Cardinal((pointer(Cardinal(Input) + Cardinal(i + 4)))^);
    if encode then
      TEA_Cipher(@DataIn, DOut, @key)
    else
      TEA_DECipher(@DataIn, DOut, @key);
    Cardinal(pointer(Cardinal(Output) + Cardinal(i))^) := DataOut[0];
    Cardinal(pointer(Cardinal(Output) + Cardinal(i + 4))^) := DataOut[1];
    inc(i, 8);
  until i >= sz;

end;

procedure TEA_Encode(Input, Output: pointer; size: integer; key: TEAKey);
begin
  TEA_EnDec(true, Input, Output, size, key);
end;

procedure TEA_Decode(Input, Output: pointer; size: integer; key: TEAKey);
begin
  TEA_EnDec(false, Input, Output, size, key);
end;

end.




Похожие по теме исходники

Генетический Алгоритм

Алгоритм Дейкстры

Алгоритм Беллмана-Форда

LEA-128 Hash

 

LEA-128 SEA Cipher

Football (team AI)

RTEA шифрование

VigenerePlus TEAII

 



Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте