Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
20th
Июн
Алгоритм шифрования TEA
Posted by Chas under Delphi, Исходники
ImmortalAlexSan
Вот рабочий код для алгоритма шифрования TEA, знаю, что проблема с описанием этого алгоритма (его как-такового и нет), а если и есть, то нерабочие.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
Const
Delta=$9E3779B9;
type
TTEAKey=array [0..3] of Cardinal;
TTEAData=array [0..1] of Cardinal;
PTEAKey=^TTEAKey;
PTEAData=^TTEAData;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
RichEdit1: TRichEdit;
RichEdit2: TRichEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
TextForEnCode:String;
TextForDeCode:String;
InData,OutData:TTEAData;
Key:TTEAKey;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Sum:Cardinal;
implementation
{$R *.dfm}
function pEnCodeTEA(aData:PTEAData;aKey:TTEAKey):TTEAData;
Var
i:Integer;
y,z:Cardinal;
begin
FillChar(Result,SizeOf(TTEAData),0);
y:=aData^[0];
z:=aData^[1];
Sum:=0;
for i:=1 to 32 do
begin
inc(Sum,Delta);
inc(y,(((z shl 4)+aKey[0]) xor (z+Sum) xor ((z shr 5)+akey[1])));
inc(z,(((y shl 4)+aKey[2]) xor (y+Sum) xor ((y shr 5)+akey[3])));
end;
Result[0]:=y;
Result[1]:=z;
end;
function pDeCodeTEA(aData:PTEAData;aKey:TTEAKey):TTEAData;
Var
i:Integer;
y,z:Cardinal;
begin
FillChar(Result,SizeOf(TTEAData),0);
y:=aData^[0];
z:=aData^[1];
for i:=1 to 32 do
begin
dec(z,(((y shl 4)+aKey[2]) xor (y+Sum) xor ((y shr 5)+akey[3])));
dec(y,(((z shl 4)+aKey[0]) xor (z+Sum) xor ((z shr 5)+akey[1])));
dec(Sum,Delta);
end;
Result[0]:=y;
Result[1]:=z;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FillChar(InData,SizeOf(TTEAData),0);
InData[0]:=$77359400; //2 000 000 000
InData[1]:=$3B9ACA00; //1 000 000 000
OutData:=pEnCodeTEA(@InData,Key);
RichEdit1.Text:=inttostr(OutData[0])+' '+inttostr(OutData[1]);
FillChar(InData,SizeOf(TTEAData),0);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
InData:=pDeCodeTEA(@OutData,Key);
RichEdit2.Text:=inttostr(InData[0])+' '+inttostr(InData[1]);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
RichEdit2.Text:='';
Key[0]:=$195AF45B;
Key[1]:=$165AF44F;
Key[2]:=$194AF4FB;
Key[3]:=$193FF421;
end;
end.
TEA.zip (30.1 Кб) |
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)