Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2012.02.26;
Скачать: [xml.tar.bz2];

Вниз

Помогите переписать функцию с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
15-1320352202
Юрий
2011-11-03 23:30
2012.02.26
С днем рождения ! 4 ноября 2011 пятница


15-1320695289
_qwerty_
2011-11-07 22:48
2012.02.26
что подразумевается под клиентским по сетей microsoft?


15-1320674537
mvconf
2011-11-07 17:02
2012.02.26
Разработка системы видеоконференцсвязи


2-1321558497
3asys
2011-11-17 23:34
2012.02.26
передача картинки в потоке через сокет


15-1320848351
xss22
2011-11-09 18:19
2012.02.26
Удаление элемента со сдвигом из массива array of record





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский