Главная страница
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.009 c
2-1321736746
bunguev
2011-11-20 01:05
2012.02.26
Вкладки в делфи(


2-1321552371
Laguna
2011-11-17 21:52
2012.02.26
Сообщение компилятра


15-1320807493
Kerk
2011-11-09 06:58
2012.02.26
Большие сложные GUI


2-1321443234
Scott Storch
2011-11-16 15:33
2012.02.26
подождать завершения работы процедуры


15-1320006602
Юрий
2011-10-30 23:30
2012.02.26
С днем рождения ! 31 октября 2011 понедельник