Untitled
unknown
plain_text
9 months ago
10 kB
6
Indexable
org 100H .DATA InputString db 0aH,0dH, "Enter Input State: $" CipherString db 0aH,0dH, "Enter Cipher Key: $" ;-ah,0dh for new line OutputString 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 input DB 17 DB 00 DB 17 dup(?) CipherInput DB 17 DB 00 DB 17 dup(?) 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 i DB 32H, 88H, 31H, 0e0H DB 43H, 5aH, 31H, 37H DB 0f6H, 30H, 98H, 07H DB 0a8H, 8dH, 0a2H, 34H .CODE ;==================GETINPUT==================================== GETINPUT PROC ;Printing "Enter Input" MOV DX,offset InputString MOV AH,09H INT 21H ;Taking Input from user till he presses ENTER Mov DX, offset input mov AH, 0ah int 21h ;copying actual input mov si, offset input+2 mov di, offset i mov cx, 16 copy_input: mov al, [si] mov [di], al inc si inc di loop copy_input ENDP ;==================GETKEYINPUT========================================= GETKEYINPUT PROC ;Printing "Enter Cipher Key" MOV DX,offset CipherString MOV AH,09H INT 21H ;Cipher Key Input (has to be 16 bytes) MOV DX, offset CipherInput MOV AH,0ah int 21h mov si, offset CipherInput+2 mov di, offset CipherKey mov cx, 16 copy_Cipher: mov al, [si] mov [di], al inc si inc di loop copy_Cipher ENDP ;=============================FIRST XOR========================== FirstXOR PROC MOV CX,16 MOV SI,0 firstXORING: MOV AL,CipherKey[SI] XOR i[SI],AL INC SI loop firstXORING ENDP ;===================================SubBytes================================ SUBBYTESMACRO Macro LOCAL SUBBYTES MOV CX,16 MOV SI,0 SUBBYTES: MOV AL,i[SI] MOV Bl,Al MOV AL,SBOX[BX] MOV [i+SI],AL INC SI Loop SUBBYTES ENDM ;===================================ShiftRows================================ SHIFTROWSMACRO MACRO LOCAL SHIFT_ROWS 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 ENDM ;===================================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 MIXCOLUMNSMACRO MACRO LOCAL MixColumns 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 COPYRMMACRO ENDM COPYMACRO MACRO LOCAL COPYTHEI MOV CX,16 MOV SI,0 COPYTHEI: MOV AL,i[SI] MOV rm[SI],AL INC SI Loop COPYTHEI ENDM COPYRMMACRO MACRO LOCAL COPYTHERM MOV CX,16 MOV SI,0 COPYTHERM: MOV AL,rm[SI] MOV i[SI],AL INC SI Loop COPYTHERM ENDM ;===================================Bonus================================ BONUSMACRO MACRO LOCAL CipherDecryption,SB,FCXOR,R1,R2,R3,R4,CopyFromKeytoCipher 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 ENDM ;===================================RoundKey================================ ROUNDKEYMACRO MACRO LOCAL Copy,AddRoundKey,CopyAgain,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 ENDM ENCRYPT PROC MOV CX,9 AESENCRYPTION: PUSH CX SUBBYTESMACRO SHIFTROWSMACRO MIXCOLUMNSMACRO BONUSMACRO ROUNDKEYMACRO POP CX loop AESENCRYPTION SUBBYTESMACRO SHIFTROWSMACRO COPYMACRO BONUSMACRO ROUNDKEYMACRO ENDP OUTPUTTHERESULT PROC MOV DX,offset OutputString MOV AH,09H INT 21H MOV SI, offset i Mov CX,16 outputloop: MOV AL,[si] MOV DL,AL MOV AH,02H INC SI int 21H loop outputloop ;====================================================================
Editor is loading...
Leave a Comment