Untitled
unknown
plain_text
a year ago
8.3 kB
5
Indexable
org 100H
.DATA
i1 db 0aH,0dH, "Enter Input State: $"
i2 db 0aH,0dH, "Enter Cipher Key: $" ;-ah,0dh for new line
o1 db 0aH,0dH, "Output: $"
SBOX DB 63H, 07cH, 77H, 7bH, 0f2H, 6bH, 6fH, 0c5H, 30H, 01H, 67H, 2bH, 0feH, 0d7H, 0abH, 76H
DB 0caH, 82H, 0c9H, 7dH, 0faH, 59H, 47H, 0f0H, 0adH, 0d4H, 0a2H, 0afH, 9cH, 0a4H, 72H, 0c0H
DB 0b7H, 0fdH, 93H, 26H, 36H, 3fH, 0f7H, 0ccH, 34H, 0a5H, 0e5H, 0f1H, 71H, 0d8H, 31H, 15H
DB 04H, 0c7H, 23H, 0c3H, 18H, 96H, 05H, 9aH, 07H, 12H, 80H, 0e2H, 0ebH, 27H, 0b2H, 75H
DB 09H, 83H, 2cH, 1aH, 1bH, 6eH, 5aH, 0a0H, 52H, 3bH, 0d6H, 0b3H, 29H, 0e3H, 2fH, 84H
DB 53H, 0d1H, 00H, 0edH, 20H, 0fcH, 0b1H, 5bH, 6aH, 0cbH, 0beH, 39H, 4aH, 4cH, 58H, 0cfH
DB 0d0H, 0efH, 0aaH, 0fbH, 43H, 4dH, 33H, 85H, 45H, 0f9H, 02H, 7fH, 50H, 3cH, 9fH, 0a8H
DB 51H, 0a3H, 40H, 8fH, 92H, 9dH, 38H, 0f5H, 0bcH, 0b6H, 0daH, 21H, 10H, 0ffH, 0f3H, 0d2H
DB 0cdH, 0cH, 13H, 0ecH, 5fH, 97H, 44H, 17H, 0c4H, 0a7H, 7eH, 3dH, 64H, 5dH, 19H, 73H
DB 60H, 81H, 4fH, 0dcH, 22H, 2aH, 90H, 88H, 46H, 0eeH, 0b8H, 14H, 0deH, 5eH, 0bH, 0dbH
DB 0e0H, 32H, 3aH, 0aH, 49H, 06H, 24H, 5cH, 0c2H, 0d3H, 0acH, 62H, 91H, 95H, 0e4H, 79H
DB 0e7H, 0c8H, 37H, 6dH, 8dH, 0d5H, 4eH, 0a9H, 6cH, 56H, 0f4H, 0eaH, 65H, 7aH, 0aeH, 08H
DB 0baH, 78H, 25H, 2eH, 1cH, 0a6H, 0b4H, 0c6H, 0e8H, 0ddH, 74H, 1fH, 4bH, 0bdH, 8bH, 8aH
DB 70H, 3eH, 0b5H, 66H, 48H, 03H, 0f6H, 0eH, 61H, 35H, 57H, 0b9H, 86H, 0c1H, 1dH, 9eH
DB 0e1H, 0f8H, 98H, 11H, 69H, 0d9H, 8eH, 94H, 9bH, 1eH, 87H, 0e9H, 0ceH, 55H, 28H, 0dfH
DB 8cH, 0a1H, 89H, 0dH, 0bfH, 0e6H, 42H, 68H, 41H, 99H, 2dH, 0fH, 0b0H, 54H, 0bbH, 16H
i DB 19H, 0a0H, 9aH, 0e9H
DB 3dH, 0f4H, 0c6H, 0f8H
DB 0e3H, 0e2H, 8dH, 48H
DB 0beH, 2bH, 2aH, 08H
DB 24H
m DB 2H, 3H, 1H, 1H
DB 1H, 2H, 3H, 1H
DB 1H, 1H, 2H, 3H
DB 3H, 1H, 1H, 2H
rm DB 19H, 0a0H, 9aH, 0e9H
DB 3dH, 0f4H, 0c6H, 0f8H
DB 0e3H, 0e2H, 8dH, 48H
DB 0beH, 2bH, 2aH, 08H
RoundKey DB 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H
CipherKey DB 2bH, 28H, 0abH, 09H
DB 7eH, 0aeH, 0f7H, 0cfH
DB 15H, 0d2H, 15H, 4fH
DB 16H, 0a6H, 88H, 3cH
Rcon DB 01H, 02H, 04H, 08H, 10H, 20H, 40H, 80H, 1bH, 36H
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
counterRcon DW 0H
Testing DB 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H
DB 00H, 00H, 00H, 00H
.CODE
;Printing "Enter Input"
LEA DX,i1
MOV AH,09H
INT 21H
;Taking Input from user till he presses ENTER
Mov DX, offset i
mov AH, 0ah
int 21h
;PPrinting "Enter Cipher Key"
LEA DX,i2
MOV AH,09H
INT 21H
;Cipher Key Input (has to be 16 bytes)
MOV CX,16
MOV SI,0
CipherKeyInput:
MOV AH,01H
INT 21H
MOV CipherKey[SI],AL
INC SI
Loop CipherKeyInput
MOV CX,10
SOLVE:
PUSH CX
MOV CX,16
MOV SI,0H
;===================================SubBytes================================
SUBBYTES:
MOV AL,i[SI]
MOV Bl,Al
MOV AL,SBOX[BX]
MOV [i+SI],AL
INC SI
Loop SUBBYTES
;===================================ShiftRows================================
SHIFT_ROWS:
; Row 2
MOV AL, [i+4]
MOV BL, [i+5]
MOV CL, [i+6]
MOV DL, [i+7]
MOV [i+4], BL
MOV [i+5], CL
MOV [i+6], DL
MOV [i+7], AL
;Row 3
MOV AL, [i+8]
MOV BL, [i+9]
MOV CL, [i+10]
MOV DL, [i+11]
MOV [i+8], CL
MOV [i+9], DL
MOV [i+10], AL
MOV [i+11], BL
; Row 4
MOV AL, [i+12]
MOV BL, [i+13]
MOV CL, [i+14]
MOV DL, [i+15]
MOV [i+12], DL
MOV [i+13], AL
MOV [i+14], BL
MOV [i+15], CL
;If it's the last round, no MIX Columns
MOV AX,1
POP CX
SUB AX,CX
PUSH CX
JZ CipherDecryption
;===================================MixColumns================================
;For 2 Multiplication
overflow: Macro
LOCAL overf, done
MOV BL,m[0]
Mul BL
JC overf
JMP done:
overf:
XOR AL,1BH
done:
ENDM
;for 3 Multiplication
Matri: Macro
overflow
MOV BX,DI
XOR AL,i[BX+SI]
INC SI
INC SI
INC SI
INC SI
ENDM
MOV CX,4
MOV SI,4
MOV DI,0
MixColumns:
;i[0][0]
Mov AL,i[DI]
overflow
MOV DL,AL
MOV AL,i[DI+4]
Matri
XOR DL,AL
XOR DL,i[DI+8]
XOR DL,i[DI+12]
MOV rm[DI],DL
;i[1,0]
MOV DL,i[DI]
Mov AL,i[DI+4]
overflow
XOR DL,AL
MOV AL,i[DI+8]
Matri
XOR DL,AL
XOR DL,i[DI+12]
MOV rm[DI+4],DL
;i[2,0]
MOV DL,i[DI]
XOR DL,i[DI+4]
MOV AL,i[DI+8]
overflow
XOR DL,AL
MOV AL,i[DI+12]
Matri
XOR DL,AL
MOV rm[DI+8],DL
;i[3,0]
MOV SI,0
MOV AL,i[DI]
Matri
MOV DL,AL
XOR DL,i[DI+4]
XOR DL,i[DI+8]
MOV AL,i[DI+12]
overflow
XOR DL,AL
MOV rm[DI+12],DL
INC DI
Loop MixColumns
;===================================Bonus================================
CipherDecryption:
;First Column
MOV AL, CipherKey[3]
MOV BL, CipherKey[7]
MOV CL, CipherKey[11]
MOV DL, CipherKey[15]
MOV RoundKey[0],BL
MOV RoundKey[4],CL
MOV RoundKey[8],DL
MOV RoundKey[12],AL
MOV CX,4
MOV SI,0
MOV DI,3
SB:
MOV AL,RoundKey[SI]
MOV BL,AL
MOV AL,SBOX[BX]
MOV BL,AL
MOV RoundKey[SI],BL
INC SI
INC SI
INC SI
INC SI
INC DI
INC DI
INC DI
INC DI
INC DI
Loop SB
;XOR FIRST COL
MOV CX,4
MOV SI,0
FCXOR:
MOV AL,CipherKey[SI]
MOV BL,AL
XOR RoundKey[SI],BL
INC SI
INC SI
INC SI
INC SI
Loop FCXOR
;XOR RCON
MOV SI, counterRcon[0]
MOV AL,Rcon[SI]
MOV BL,AL
XOR RoundKey[0],BL
INC counterRcon
;First Row
MOV CX,3
MOV SI,1
R1:
MOV AL,CipherKey[SI]
MOV BL,AL
XOR BL,RoundKey[SI-1]
MOV RoundKey[SI],BL
INC SI
Loop R1
;Second Row
MOV CX,3
MOV SI,5
R2:
MOV AL,CipherKey[SI]
MOV BL,AL
XOR BL,RoundKey[SI-1]
MOV RoundKey[SI],BL
INC SI
Loop R2
;Third Row
MOV CX,3
MOV SI,9
R3:
MOV AL,CipherKey[SI]
MOV BL,AL
XOR BL,RoundKey[SI-1]
MOV RoundKey[SI],BL
INC SI
Loop R3
;Fourth Row
MOV CX,3
MOV SI,13
R4:
MOV AL,CipherKey[SI]
MOV BL,AL
XOR BL,RoundKey[SI-1]
MOV RoundKey[SI],BL
INC SI
Loop R4
MOV CX,16
MOV SI,0
CopyFromKeytoCipher:
MOV AL,RoundKey[SI]
MOV BL,AL
MOV CipherKey[SI],BL
INC SI
Loop CopyFromKeytoCipher
;===================================RoundKey================================
;If it's the last round, it copies whatever is in i to rm
MOV AX,1
POP CX
SUB AX,CX
PUSH CX
JNZ NotLastRound
MOV CX,16
MOV SI,0
Copy:
MOV AL,i[SI]
MOV rm[SI],AL
INC SI
Loop copy
NotLastRound:
MOV CX,16
MOV SI,0
AddRoundKey:
MOV AL,RoundKey[SI]
MOV BL,rm[SI]
XOR AL,BL
MOV rm[SI],AL
INC SI
Loop AddRoundKey
MOV CX,16
MOV SI,0
CopyAgain:
MOV AL,rm[SI]
MOV i[SI],AL
INC SI
Loop CopyAgain
End:
POP CX
Loop SOLVE
Output:
LEA DX,o1
MOV AH,09H
INT 21H
LEA DX,i
MOV AH,09H
INT 21H
;====================================================================
Editor is loading...
Leave a Comment