Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.02.26;
Скачать: CL | DM;

Вниз

Помогите переписать функцию с ASM на Pascal или C   Найти похожие ветки 

 
DVM ©   (2011-11-08 16:28) [0]

Функция, я так понимаю, представляет собой базовый шаг кодирования ГОСТ 28147-89 или какую то вариацию на эту тему. Автор функции, вроде бы, местный форумчанин Alexander Panfilov (palva?). В принципе я бы мог конечно реализовать алгоритм шифрования по ГОСТ с нуля самостоятельно, но, дело в том, что функция вот в таком виде уже используется клиентом сервера (который мне недоступен), а сервер требуется перевести на 64 бит. И я не уверен, что эта функция точно соответствует алгоритму ГОСТ. Т.е нужена точная копия именно этой функции на Pascal-е или C.
В ASM я не особенно силен, потому прошу помощи у знатоков.


type
 TGOSTBlock = array[0..1] of LongWord;
 TGOSTKey = array[0..7] of LongWord;
 TGOSTSubstitutionTable = array[0..3, 0..255] of Byte;

var
 GOSTKey: TGOSTKey = {$INCLUDE key.inc }
 GOSTTable: TGOSTSubstitutionTable = {$INCLUDE table.inc }

procedure GOST_EncryptBlock(var GBlock: TGOSTBlock); assembler;
var
 blk: Pointer;
 i: LongInt;

label
 L, L1, L2;

asm
 push ebx
 push esi
 push edi

 mov  ebx, GBlock
 mov  blk, ebx
 mov  eax, [ebx]
 mov  edx, [ebx+4]

 mov  i, 3
L:
 mov  ecx, 8
 lea  esi, GOSTKey

L1:
 mov  edi, eax
 add  eax, [esi]
 lea  ebx, GOSTTable
 xlat
 ror  eax, 8
 add  ebx, 256
 xlat
 ror  eax, 8
 add  ebx, 256
 xlat
 ror  eax, 8
 add  ebx, 256
 xlat
 rol  eax, 3
 xor  eax, edx
 mov  edx, edi
 add  esi, 4
loop L1

 sub  i, 1              
 jnz  L                

 mov  ecx, 8
 lea  esi, GOSTKey
 add  esi, 28

L2:
 mov  edi, eax
 add  eax, [esi]
 lea  ebx, GOSTTable
 xlat
 ror  eax, 8
 add  ebx, 256
 xlat
 ror  eax, 8
 add  ebx, 256
 xlat
 ror  eax, 8
 add  ebx, 256
 xlat
 rol  eax, 3
 xor  eax, edx
 mov  edx, edi
 sub  esi, 4

loop L2

 mov  ebx, blk
 mov  [ebx], edx
 mov  [ebx+4], eax

 pop  edi
 pop  esi
 pop  ebx
end;



Страницы: 1 вся ветка

Текущий архив: 2012.02.26;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
6-1251214387
alik
2009-08-25 19:33
2012.02.26
Подвисание при вызове TcpClient1.Receiveln()


15-1320485519
RDen
2011-11-05 12:31
2012.02.26
Свернуть все окна в Win XP


2-1321131467
Laguna
2011-11-13 00:57
2012.02.26
Изменить курсор вне модальной формы


15-1320870602
Юрий
2011-11-10 00:30
2012.02.26
С днем рождения ! 10 ноября 2011 четверг


2-1321257874
igorium
2011-11-14 12:04
2012.02.26
Загрузка в динамический Image часть изображения из файла