· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.A&O —› KeyExpansion Псевдокод -> asm

Посл.отвђт Сообщенiе


Дата: Окт 21, 2004 19:40:53

В теме wasm.cryptography Володя дал ссылку на хороший ресурс по
алгоритму Rijndael следуя этой ссылке я скачал себе главу 3.
В этой главе описано как из ключа шифрования получать расширен-
ный ключ и написано в виде функции на псевдокоде:

KeyExpansion(byte key[4*Nk],word w[Nb*(Nr+1)],Nk)
begin
word temp
i = 0

while (i<Nk)

w[i] = word (key[4*i],key[4*i+1],key[4*i+2],key[4*i+2],key[4*i+3])
i = i+1

end while

i = Nk

while(i<Nb*(Nr+1))
temp = w[i-1]

if (i mod Nk = 0)
temp = SubWord(RotWord(temp)) xor Rcon[i/Nk]
else if (Nk>6 and i mod Nk=4)
temp = SubWord(temp)
end if
w[i] = w[i=Nk] xor temp
i = i+1

end while

end
\\\\\\\\\\
также он сказал следующее:

"Rcon[] - массив 32 битных раундовых констант;
RotWord() - операция циклической перестановки входного 4-
байтного слова в выходное по сдедующему правилу [a0,a1,a2,a3]->
->[a1,a2,a3,a0]
SubWord - операция замены в 4-байтном слове с помощью S-box каж-
дого байта"


1. Для первого цикла я написал:
mov cx,Nk
round:
mov eax,dword ptr[esi]
mov dword ptr[edi],eax
add esi
loop round
Все верно?

2. Каким второй цикл представить на ассемблере?


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.074