Gold Member
Регистрация: 25.06.2005
Адрес: F000:FFF0
Сообщений: 1,830
|
Сны воина дzена...
.code
entry:
mov ax,@data
mov ds,ax
;-------------------------------------------------------
;
; GF(2^8) Exp3 and Log3 Table generator (AES)
;
; p(x) = x^8 + x^4 + x^3 + x + 1 (p = 0x11B)
; alpha(x) = x + 1 (alpha = 0x3)
;
; alpha(x)^0 = 1; alpha(x)^255 = 1; k = 1..254
; alpha(x)^k = ((alpha(x)^(k - 1)) * alpha(x)) mod p(x)
;
; log(0) = 0 (N/A); log(1) = 0;
; log(alpha(x)^k) = k
;
;-------------------------------------------------------
mov byte ptr ET3[0],1
mov byte ptr ET3[255],1
mov byte ptr LT3[0],0
mov byte ptr LT3[1],0
xor bx,bx
mov si,1
l0:
mov bl,ET3[si-1]
shl bl,1
jnc l1
xor bl,byte ptr AES_P
l1:
xor bl,ET3[si-1]
mov ET3[si],bl
mov ax,si
mov LT3[bx],al
inc si
cmp si,255
jne l0
;----------------------------------------------
;
; GF(2^8) Mul Inverse Table generator (AES)
;
; (0)^(-1) = 0 (N/A); (1)^(-1) = 1; k = 2..255
;
; k(x)^(-1) = alpha(x)^(255 - log(k(x)))
;
; (k(x)*(k(x)^(-1))) mod p(x) = 1
;
;----------------------------------------------
mov byte ptr INVT[0],0
mov byte ptr INVT[1],1
xor bx,bx
mov si,2
l2:
mov bl,LT3[si]
not bl
mov al,ET3[bx]
mov INVT[si],al
inc si
cmp si,256
jne l2
;----------------------------------------------
;
; AES S-Box Table generator
;
; g(x) = x^4 + x^3 + x^2 + x + 1
; c(x) = x^6 + x^5 + x + 1
; k = 0..255
;
; t(x) = k(x)^(-1) in GF(2^8) field for AES
; (0)^(-1) is assumed to be 0
;
; sb(x) = ((t(x) * g(x)) mod (x^8 + 1)) + c(x)
; operations with polynoms over GF(2)
;
;----------------------------------------------
xor bx,bx
xor si,si
l3:
mov al,INVT[si]
mov bl,al
mov cx,4
l4:
rol al,1
xor bl,al
loop l4
xor bl,AES_C
mov SBT[si],bl
inc si
cmp si,256
jne l3
;----------------------------------------------
;
; AES Inverse S-Box Table generator
;
; h(x) = x^6 + x^3 + x
; c(x) = x^6 + x^5 + x + 1
; k = 0..255
;
; t(x) = (((k(x) + c(x)) * h(x)) mod (x^8 + 1)
; operations with polynoms over GF(2)
;
; isb(x) = t(x)^(-1) in GF(2^8) field for AES
; (0)^(-1) is assumed to be 0
;
;----------------------------------------------
xor bx,bx
xor si,si
l5:
mov ax,si
xor al,AES_C
xor bl,bl
mov cx,3
l6:
rol al,3
xor bl,al
loop l6
mov al,INVT[bx]
mov ISBT[si],al
inc si
cmp si,256
jne l5
fin:
mov ax,4c00h
int 21h
.data
ET3 db 256 dup (0)
LT3 db 256 dup (0)
INVT db 256 dup (0)
SBT db 256 dup (0)
ISBT db 256 dup (0)
AES_P dw 011Bh
AES_C db 63h
end entry
|