?? des.a51
字號:
;-------------------------------------------------------------------------------
ANL (BUF+5),#11000000B ;*********
ORL (BUF+5),A
;-------------------------------------------------------------------------------
CLR A
MOV C, (BITS_1+5).4
RLC A
MOV C, (BITS_1+6).7
RLC A
MOV C, (BITS_1+4).1
RLC A
MOV C, (BITS_1+6).0
RLC A
MOV C, (BITS_1+4).6
RLC A
MOV C, (BITS_1+6).3
RLC A
;-------------------------------------------------------------------------------
ANL (BUF+6),#1100$0000B ;*********
ORL (BUF+6),A ;*************
;-------------------------------------------------------------------------------
CLR A
MOV C, (BITS_1+5).2
RLC A
MOV C, (BITS_1+5).6
RLC A
MOV C, (BITS_1+6).6
RLC A
MOV C, (BITS_1+4).4
RLC A
MOV C, (BITS_1+3).3
RLC A
MOV C, (BITS_1+3).0
RLC A
MOV C, ACC.0 ;????????????????????????????????
;-------------------------------------------------------------------------------
ANL (BUF+7),#11000000B ;*********
ORL (BUF+7),A
;-------------------------------------------------------------------------------
;======================================================
MOV DPTR, #S1BOX
JNB B_DES,S_1
JMP S_2
;s_1==========================================================
S_1:
; Step 2.3: The S box transform: hard-coded
; The results are in (BUF) - (BUF+3)
; // S-Box No.1========================================
MOV A, BLOCK+7
RRC A
MOV A, BLOCK+4
LCALL S_BOX1
; // S-Box No.2========================================
MOV A, BLOCK+5
RLC A
MOV A, BLOCK+4
LCALL S_BOX2
; // S-Box No.3========================================
MOV A, BLOCK+4
RRC A
MOV A, BLOCK+5
LCALL S_BOX3
; // S-Box No.4=========================================
MOV A, BLOCK+6
RLC A
MOV A, BLOCK+5
LCALL S_BOX4
; // S-Box No.5==========================================
MOV A, BLOCK+5
RRC A
MOV A, BLOCK+6
LCALL S_BOX5
; // S-Box No.6==================================================
MOV A, BLOCK+7
RLC A
MOV A, BLOCK+6
LCALL S_BOX6
; // S-Box No.7===========================================
MOV A, BLOCK+6
RRC A
MOV A, BLOCK+7
LCALL S_BOX7
; // S-Box No.8===========================================
MOV A, BLOCK+4
RLC A
MOV A, BLOCK+7
JMP S_BOX80
;s 2=============================================================
s_2:
; Step 2.3B: The S box transform: hard-coded
; The results are in (BUF) - (BUF+3)
; // S-Box No.1===============================================================
MOV A, BLOCK+3
RRC A
MOV A, BLOCK
LCALL S_BOX1
; // S-Box No.2=============================================================
MOV A, BLOCK+1
RLC A
MOV A, BLOCK
LCALL S_BOX2
; // S-Box No.3=============================================================
MOV A, BLOCK
RRC A
MOV A, BLOCK+1
LCALL S_BOX3
; // S-Box No.4=================================================================
MOV A, BLOCK+2
RLC A
MOV A, BLOCK+1
LCALL S_BOX4
; // S-Box No.5=========================================================
MOV A, BLOCK+1
RRC A
MOV A, BLOCK+2
LCALL S_BOX5
; // S-Box No.6=======================================================
MOV A, BLOCK+3
RLC A
MOV A, BLOCK+2
LCALL S_BOX6
; // S-Box No.7======================================================
MOV A, BLOCK+2
RRC A
MOV A, BLOCK+3
LCALL S_BOX7
; // S-Box No.8========================================================
MOV A, BLOCK
RLC A
MOV A, BLOCK+3
S_BOX80:
RLC A
XRL A, BUF+7
SETB ACC.6
CLR ACC.7
MOVC A, @A+DPTR
ANL A,#0FH
ORL BUF+3, A
;=============================================================
s_over:
; Step 2.4: The P-pemutation of the output from S-box
; From (BUF) - (BUF+3)
; To (BUF+4) - (BUF+7)
MOV C, (BUF+1).0
RLC A
MOV C, (BUF+0).1
RLC A
MOV C, (BUF+2).4
RLC A
MOV C, (BUF+2).3
RLC A
MOV C, (BUF+3).3
RLC A
MOV C, (BUF+1).4
RLC A
MOV C, (BUF+3).4
RLC A
MOV C, (BUF+2).7
RLC A
MOV (BUF+4),A ;*******************
MOV C, (BUF+0).7
RLC A
MOV C, (BUF+1).1
RLC A
MOV C, (BUF+2).1
RLC A
MOV C, (BUF+3).6
RLC A
MOV C, (BUF+0).3
RLC A
MOV C, (BUF+2).6
RLC A
MOV C, (BUF+3).1
RLC A
MOV C, (BUF+1).6
RLC A
MOV (BUF+5),A ;*******************
MOV C, (BUF+0).6
RLC A
MOV C, (BUF+0).0
RLC A
MOV C, (BUF+2).0
RLC A
MOV C, (BUF+1).2
RLC A
MOV C, (BUF+3).0
RLC A;
MOV C, (BUF+3).5
RLC A;
MOV C, (BUF+0).5
RLC A
MOV C, (BUF+1).7
RLC A
MOV (BUF+6),A ;****************
MOV C, (BUF+2).5
RLC A;
MOV C, (BUF+1).3
RLC A
MOV C, (BUF+3).2
RLC A
MOV C, (BUF+0).2
RLC A;
MOV C, (BUF+2).2
RLC A
MOV C, (BUF+1).5
RLC A
MOV C, (BUF+0).4
RLC A
MOV C, (BUF+3).7
RLC A
MOV (BUF+7),A ;*********************
JB B_DES, LH_DES_2
;===========================================================
;***********************************************************
;===========================================================
; Step 2.5: XOR the output of the S-box back to the block
; Note: here we do NOT follow the classical left <-> right
; exchange. Rather we reverse their reference in the second part
MOV A, BUF+4
XRL BLOCK, A
MOV A, BUF+5
XRL BLOCK+1, A
MOV A, BUF+6
XRL BLOCK+2, A
MOV A, BUF+7
XRL BLOCK+3, A
; The second part of the un-rolled loop
DEC R1 ; R1 acts as the reference to shift counts
; Step 2.1B: Rotate the key vector
;===========================================================
;2== ***********************************************************
;===========================================================
SETB B_DES
JMP LH_DES_1
;===========================================================
;***********************************************************
LH_DES_2:
;===========================================================
; Step 2.5: XOR the output of the S-box back to the block
; Note: here we do NOT follow the classical left <-> right
; exchange. Rather we reverse their reference in the second part
MOV A, BUF+4
XRL BLOCK+4, A
MOV A, BUF+5
XRL BLOCK+5, A
MOV A, BUF+6
XRL BLOCK+6, A
MOV A, BUF+7
XRL BLOCK+7, A
; Step 2.6: Done in this round and we loop again
DJNZ R1, NEXT_1
SJMP STEP_3 ; End of the 8 loops
NEXT_1: LJMP LOOP_1 ; Next loop
; Step 3: Final permutation of the block (FP)
STEP_3:
MOV A, R5
JB ACC.1, FPERM
JMP DONE
FPERM:
; Step 3.1:
;****************************************
MOV R0,#BLOCK
MOV R1,#BLOCK+2
LCALL STEP31
MOV R0,#BLOCK+4
MOV R1,#BLOCK+6
LCALL STEP31
;******************************************
MOV R7,#04H
MOV R0,#BLOCK
MOV R1,#BLOCK+1
STEP3:
MOV A,@R0
RL A
RL A
MOV @R0,A
XRL A,@R1
ANL A,#0CCH
XCH A,@R1
XRL A,@R1
XCH A,@R1
XRL A,@R0
RR A
RR A
MOV @R0,A
INC R0
INC R1
INC R0
INC R1
DJNZ R7,STEP3
;**********************************************
; Step 3.3:
MOV R7,#04H
MOV R0,#BLOCK
MOV R1,#BLOCK+4
STEP33:
MOV A,@R0
RL A
MOV @R0,A
XRL A,@R1
ANL A,#0AAH
XCH A,@R1
XRL A,@R1
XCH A,@R1
XRL A,@R0
RR A
MOV @R0,A
INC R0
INC R1
DJNZ R7,STEP33
;**********************************************
; Step 3.4:
MOV A, BLOCK
XCH A,BLOCK+7
XCH A,BLOCK
MOV A,BLOCK+4
XCH A,BLOCK+6
XCH A,BLOCK+2
XCH A,BLOCK+3
XCH A,BLOCK+1
XCH A,BLOCK+5
MOV BLOCK+4,A
; Step 3.5: Done
;*****************************************************************
DONE:
; Done: Now we are done, the encrypted data is in BLOCK
RET
;*********************************************
STEP31:
MOV R7,#02
STEP310:
MOV A,@R0
SWAP A
MOV @R0,A
XRL A,@R1
ANL A,#0F0H
XCH A,@R1
XRL A,@R1
XCH A,@R1
XRL A,@R0
SWAP A
MOV @R0,A
INC R0
INC R1
DJNZ R7,STEP310
RET
STEP12:
MOV R7,#02
STEP120:
MOV A,@R0
RL A
RL A
MOV @R0,A
XRL A,@R1
ANL A,#0CCH
XCH A,@R1
XRL A,@R1
XCH A,@R1
XRL A,@R0
RR A
RR A
MOV @R0,A
INC R0
INC R1
DJNZ R7,STEP120
RET
;**********************************************
S_BOX1:
RRC A
RR A
RR A
XRL A, BUF
ANL A, #3FH
MOVC A, @A+DPTR
ANL A,#0F0H
MOV BUF, A
RET
S_BOX2:
RLC A
XRL A, BUF+1
ANL A, #3FH
MOVC A, @A+DPTR
ANL A,#0FH
ORL BUF, A
RET
S_BOX3:
RRC A
RR A
RR A
XRL A, BUF+2
CLR ACC.7
SETB ACC.6
MOVC A, @A+DPTR
ANL A,#0F0H
MOV BUF+1, A
RET
S_BOX4:
RLC A
XRL A, BUF+3
CLR ACC.7
SETB ACC.6
MOVC A, @A+DPTR
ANL A,#0FH
ORL BUF+1, A
RET
S_BOX5:
RRC A
RR A
RR A
XRL A, BUF+4
MOV DPTR, #S5BOX
ANL A, #3FH
MOVC A, @A+DPTR
ANL A,#0F0H
MOV BUF+2, A
RET
S_BOX6:
RLC A
XRL A, BUF+5
ANL A, #3FH
MOVC A, @A+DPTR
ANL A,#0FH
ORL BUF+2, A
RET
S_BOX7:
RRC A
RR A
RR A
XRL A, BUF+6
CLR ACC.7
SETB ACC.6
MOVC A, @A+DPTR
ANL A,#0F0H
MOV BUF+3, A
RET
;********************************************
$ENDIF ; __PHILIPS != 2
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -