⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 md4block.asm

📁 MD4的源代码。该算法来源于应用密码学的随书附带光盘。已通过调试
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	add	ax,[bx+4]
	adc	dx,[bx+6]
	add	ax,WORD PTR $S26_A
	adc	dx,si
	add	ax,31129
	adc	dx,23170
	ROTLL
	ROTLL
	ROTLL
	mov	WORD PTR $S26_A,ax
	mov	si,dx
;|***   gg(D , A , B , C ,  5 , gs2);
	mov	cx,ax
	mov	di,dx
	and	ax,WORD PTR $S27_B
	and	dx,WORD PTR $S27_B+2
	and	cx,WORD PTR $S28_C
	and	di,WORD PTR $S28_C+2
	or	ax,cx
	or	dx,di
	mov	cx,WORD PTR $S27_B
	mov	di,WORD PTR $S27_B+2
	and	cx,WORD PTR $S28_C
	and	di,WORD PTR $S28_C+2
	or	ax,cx
	or	dx,di
	add	ax,[bx+20]
	adc	dx,[bx+22]
	add	ax,WORD PTR $S29_D
	adc	dx,WORD PTR $S29_D+2
	add	ax,31129
	adc	dx,23170
	ROTLL
	ROTLL
	ROTLL
	ROTLL
	ROTLL
	mov	WORD PTR $S29_D,ax
	mov	WORD PTR $S29_D+2,dx
;|***   gg(C , D , A , B ,  9 , gs3);
	mov	cx,ax
	mov	di,dx
	and	ax,WORD PTR $S26_A
	and	dx,si
	and	cx,WORD PTR $S27_B
	and	di,WORD PTR $S27_B+2
	or	ax,cx
	or	dx,di
	mov	cx,WORD PTR $S26_A
	mov	di,si
	and	cx,WORD PTR $S27_B
	and	di,WORD PTR $S27_B+2
	or	ax,cx
	or	dx,di
	add	ax,[bx+36]
	adc	dx,[bx+38]
	add	ax,WORD PTR $S28_C
	adc	dx,WORD PTR $S28_C+2
	add	ax,31129
	adc	dx,23170
	xchg	dh,dl
	xchg	dl,ah
	xchg	ah,al
	ROTLL
	mov	WORD PTR $S28_C,ax
	mov	WORD PTR $S28_C+2,dx
;|***   gg(B , C , D , A , 13 , gs4);
	mov	cx,ax
	mov	di,dx
	and	ax,WORD PTR $S29_D
	and	dx,WORD PTR $S29_D+2
	and	cx,WORD PTR $S26_A
	and	di,si
	or	ax,cx
	or	dx,di
	mov	cx,WORD PTR $S29_D
	mov	di,WORD PTR $S29_D+2
	and	cx,WORD PTR $S26_A
	and	di,si
	or	ax,cx
	or	dx,di
	add	ax,[bx+52]
	adc	dx,[bx+54]
	add	ax,WORD PTR $S27_B
	adc	dx,WORD PTR $S27_B+2
	add	ax,31129
	adc	dx,23170
	xchg	ax,dx
	ROTRL
	ROTRL
	ROTRL
	mov	WORD PTR $S27_B,ax
	mov	WORD PTR $S27_B+2,dx
;|***   gg(A , B , C , D ,  2 , gs1);
	mov	cx,ax
	mov	di,dx
	and	ax,WORD PTR $S28_C
	and	dx,WORD PTR $S28_C+2
	and	cx,WORD PTR $S29_D
	and	di,WORD PTR $S29_D+2
	or	ax,cx
	or	dx,di
	mov	cx,WORD PTR $S28_C
	mov	di,WORD PTR $S28_C+2
	and	cx,WORD PTR $S29_D
	and	di,WORD PTR $S29_D+2
	or	ax,cx
	or	dx,di
	add	ax,[bx+8]
	adc	dx,[bx+10]
	add	ax,WORD PTR $S26_A
	adc	dx,si
	add	ax,31129
	adc	dx,23170
	ROTLL
	ROTLL
	ROTLL
	mov	WORD PTR $S26_A,ax
	mov	si,dx
;|***   gg(D , A , B , C ,  6 , gs2);
	mov	cx,ax
	mov	di,dx
	and	ax,WORD PTR $S27_B
	and	dx,WORD PTR $S27_B+2
	and	cx,WORD PTR $S28_C
	and	di,WORD PTR $S28_C+2
	or	ax,cx
	or	dx,di
	mov	cx,WORD PTR $S27_B
	mov	di,WORD PTR $S27_B+2
	and	cx,WORD PTR $S28_C
	and	di,WORD PTR $S28_C+2
	or	ax,cx
	or	dx,di
	add	ax,[bx+24]
	adc	dx,[bx+26]
	add	ax,WORD PTR $S29_D
	adc	dx,WORD PTR $S29_D+2
	add	ax,31129
	adc	dx,23170
	ROTLL
	ROTLL
	ROTLL
	ROTLL
	ROTLL
	mov	WORD PTR $S29_D,ax
	mov	WORD PTR $S29_D+2,dx
;|***   gg(C , D , A , B , 10 , gs3);
	mov	cx,ax
	mov	di,dx
	and	ax,WORD PTR $S26_A
	and	dx,si
	and	cx,WORD PTR $S27_B
	and	di,WORD PTR $S27_B+2
	or	ax,cx
	or	dx,di
	mov	cx,WORD PTR $S26_A
	mov	di,si
	and	cx,WORD PTR $S27_B
	and	di,WORD PTR $S27_B+2
	or	ax,cx
	or	dx,di
	add	ax,[bx+40]
	adc	dx,[bx+42]
	add	ax,WORD PTR $S28_C
	adc	dx,WORD PTR $S28_C+2
	add	ax,31129
	adc	dx,23170
	xchg	dh,dl
	xchg	dl,ah
	xchg	ah,al
	ROTLL
	mov	WORD PTR $S28_C,ax
	mov	WORD PTR $S28_C+2,dx
;|***   gg(B , C , D , A , 14 , gs4);
	mov	cx,ax
	mov	di,dx
	and	ax,WORD PTR $S29_D
	and	dx,WORD PTR $S29_D+2
	and	cx,WORD PTR $S26_A
	and	di,si
	or	ax,cx
	or	dx,di
	mov	cx,WORD PTR $S29_D
	mov	di,WORD PTR $S29_D+2
	and	cx,WORD PTR $S26_A
	and	di,si
	or	ax,cx
	or	dx,di
	add	ax,[bx+56]
	adc	dx,[bx+58]
	add	ax,WORD PTR $S27_B
	adc	dx,WORD PTR $S27_B+2
	add	ax,31129
	adc	dx,23170
	xchg	ax,dx
	ROTRL
	ROTRL
	ROTRL
	mov	WORD PTR $S27_B,ax
	mov	WORD PTR $S27_B+2,dx
;|***   gg(A , B , C , D ,  3 , gs1);
	mov	cx,ax
	mov	di,dx
	and	ax,WORD PTR $S28_C
	and	dx,WORD PTR $S28_C+2
	and	cx,WORD PTR $S29_D
	and	di,WORD PTR $S29_D+2
	or	ax,cx
	or	dx,di
	mov	cx,WORD PTR $S28_C
	mov	di,WORD PTR $S28_C+2
	and	cx,WORD PTR $S29_D
	and	di,WORD PTR $S29_D+2
	or	ax,cx
	or	dx,di
	add	ax,[bx+12]
	adc	dx,[bx+14]
	add	ax,WORD PTR $S26_A
	adc	dx,si
	add	ax,31129
	adc	dx,23170
	ROTLL
	ROTLL
	ROTLL
	mov	WORD PTR $S26_A,ax
	mov	si,dx
;|***   gg(D , A , B , C ,  7 , gs2);
	mov	cx,ax
	mov	di,dx
	and	ax,WORD PTR $S27_B
	and	dx,WORD PTR $S27_B+2
	and	cx,WORD PTR $S28_C
	and	di,WORD PTR $S28_C+2
	or	ax,cx
	or	dx,di
	mov	cx,WORD PTR $S27_B
	mov	di,WORD PTR $S27_B+2
	and	cx,WORD PTR $S28_C
	and	di,WORD PTR $S28_C+2
	or	ax,cx
	or	dx,di
	add	ax,[bx+28]
	adc	dx,[bx+30]
	add	ax,WORD PTR $S29_D
	adc	dx,WORD PTR $S29_D+2
	add	ax,31129
	adc	dx,23170
	ROTLL
	ROTLL
	ROTLL
	ROTLL
	ROTLL
	mov	WORD PTR $S29_D,ax
	mov	WORD PTR $S29_D+2,dx
;|***   gg(C , D , A , B , 11 , gs3);
	mov	cx,ax
	mov	di,dx
	and	ax,WORD PTR $S26_A
	and	dx,si
	and	cx,WORD PTR $S27_B
	and	di,WORD PTR $S27_B+2
	or	ax,cx
	or	dx,di
	mov	cx,WORD PTR $S26_A
	mov	di,si
	and	cx,WORD PTR $S27_B
	and	di,WORD PTR $S27_B+2
	or	ax,cx
	or	dx,di
	add	ax,[bx+44]
	adc	dx,[bx+46]
	add	ax,WORD PTR $S28_C
	adc	dx,WORD PTR $S28_C+2
	add	ax,31129
	adc	dx,23170
	xchg	dh,dl
	xchg	dl,ah
	xchg	ah,al
	ROTLL
	mov	WORD PTR $S28_C,ax
	mov	WORD PTR $S28_C+2,dx
;|***   gg(B , C , D , A , 15 , gs4);
	mov	cx,ax
	mov	di,dx
	and	ax,WORD PTR $S29_D
	and	dx,WORD PTR $S29_D+2
	and	cx,WORD PTR $S26_A
	and	di,si
	or	ax,cx
	or	dx,di
	mov	cx,WORD PTR $S29_D
	mov	di,WORD PTR $S29_D+2
	and	cx,WORD PTR $S26_A
	and	di,si
	or	ax,cx
	or	dx,di
	add	ax,[bx+60]
	adc	dx,[bx+62]
	add	ax,WORD PTR $S27_B
	adc	dx,WORD PTR $S27_B+2
	add	ax,31129
	adc	dx,23170
	xchg	ax,dx
	ROTRL
	ROTRL
	ROTRL
	mov	WORD PTR $S27_B,ax
	mov	WORD PTR $S27_B+2,dx
;|***   hh(A , B , C , D ,  0 , hs1); /* Round 3 */
	xor	ax,WORD PTR $S28_C
	xor	dx,WORD PTR $S28_C+2
	xor	ax,WORD PTR $S29_D
	xor	dx,WORD PTR $S29_D+2
	add	ax,[bx]
	adc	dx,[bx+2]
	add	ax,WORD PTR $S26_A
	adc	dx,si
	add	ax,-5215
	adc	dx,28377
	ROTLL
	ROTLL
	ROTLL
	mov	WORD PTR $S26_A,ax
	mov	si,dx
;|***   hh(D , A , B , C ,  8 , hs2);
	xor	ax,WORD PTR $S27_B
	xor	dx,WORD PTR $S27_B+2
	xor	ax,WORD PTR $S28_C
	xor	dx,WORD PTR $S28_C+2
	add	ax,[bx+32]
	adc	dx,[bx+34]
	add	ax,WORD PTR $S29_D
	adc	dx,WORD PTR $S29_D+2
	add	ax,-5215
	adc	dx,28377
	xchg	dh,dl
	xchg	dl,ah
	xchg	ah,al
	ROTLL
	mov	WORD PTR $S29_D,ax
	mov	WORD PTR $S29_D+2,dx
;|***   hh(C , D , A , B ,  4 , hs3);
	xor	ax,WORD PTR $S26_A
	xor	dx,si
	xor	ax,WORD PTR $S27_B
	xor	dx,WORD PTR $S27_B+2
	add	ax,[bx+16]
	adc	dx,[bx+18]
	add	ax,WORD PTR $S28_C
	adc	dx,WORD PTR $S28_C+2
	add	ax,-5215
	adc	dx,28377
	xchg	dh,dl
	xchg	dl,ah
	xchg	ah,al
	ROTLL
	ROTLL
	ROTLL
	mov	WORD PTR $S28_C,ax
	mov	WORD PTR $S28_C+2,dx
;|***   hh(B , C , D , A , 12 , hs4);
	xor	ax,WORD PTR $S29_D
	xor	dx,WORD PTR $S29_D+2
	xor	ax,WORD PTR $S26_A
	xor	dx,si
	add	ax,[bx+48]
	adc	dx,[bx+50]
	add	ax,WORD PTR $S27_B
	adc	dx,WORD PTR $S27_B+2
	add	ax,-5215
	adc	dx,28377
	xchg	ax,dx
	ROTRL
	mov	WORD PTR $S27_B,ax
	mov	WORD PTR $S27_B+2,dx
;|***   hh(A , B , C , D ,  2 , hs1);
	xor	ax,WORD PTR $S28_C
	xor	dx,WORD PTR $S28_C+2
	xor	ax,WORD PTR $S29_D
	xor	dx,WORD PTR $S29_D+2
	add	ax,[bx+8]
	adc	dx,[bx+10]
	add	ax,WORD PTR $S26_A
	adc	dx,si
	add	ax,-5215
	adc	dx,28377
	ROTLL
	ROTLL
	ROTLL
	mov	WORD PTR $S26_A,ax
	mov	si,dx
;|***   hh(D , A , B , C , 10 , hs2);
	xor	ax,WORD PTR $S27_B
	xor	dx,WORD PTR $S27_B+2
	xor	ax,WORD PTR $S28_C
	xor	dx,WORD PTR $S28_C+2
	add	ax,[bx+40]
	adc	dx,[bx+42]
	add	ax,WORD PTR $S29_D
	adc	dx,WORD PTR $S29_D+2
	add	ax,-5215
	adc	dx,28377
	xchg	dh,dl
	xchg	dl,ah
	xchg	ah,al
	ROTLL
	mov	WORD PTR $S29_D,ax
	mov	WORD PTR $S29_D+2,dx
;|***   hh(C , D , A , B ,  6 , hs3);
	xor	ax,WORD PTR $S26_A
	xor	dx,si
	xor	ax,WORD PTR $S27_B
	xor	dx,WORD PTR $S27_B+2
	add	ax,[bx+24]
	adc	dx,[bx+26]
	add	ax,WORD PTR $S28_C
	adc	dx,WORD PTR $S28_C+2
	add	ax,-5215
	adc	dx,28377
	xchg	dh,dl
	xchg	dl,ah
	xchg	ah,al
	ROTLL
	ROTLL
	ROTLL
	mov	WORD PTR $S28_C,ax
	mov	WORD PTR $S28_C+2,dx
;|***   hh(B , C , D , A , 14 , hs4);
	xor	ax,WORD PTR $S29_D
	xor	dx,WORD PTR $S29_D+2
	xor	ax,WORD PTR $S26_A
	xor	dx,si
	add	ax,[bx+56]
	adc	dx,[bx+58]
	add	ax,WORD PTR $S27_B
	adc	dx,WORD PTR $S27_B+2
	add	ax,-5215
	adc	dx,28377
	xchg	ax,dx
	ROTRL
	mov	WORD PTR $S27_B,ax
	mov	WORD PTR $S27_B+2,dx
;|***   hh(A , B , C , D ,  1 , hs1);
	xor	ax,WORD PTR $S28_C
	xor	dx,WORD PTR $S28_C+2
	xor	ax,WORD PTR $S29_D
	xor	dx,WORD PTR $S29_D+2
	add	ax,[bx+4]
	adc	dx,[bx+6]
	add	ax,WORD PTR $S26_A
	adc	dx,si
	add	ax,-5215
	adc	dx,28377
	ROTLL
	ROTLL
	ROTLL
	mov	WORD PTR $S26_A,ax
	mov	si,dx
;|***   hh(D , A , B , C ,  9 , hs2);
	xor	ax,WORD PTR $S27_B
	xor	dx,WORD PTR $S27_B+2
	xor	ax,WORD PTR $S28_C
	xor	dx,WORD PTR $S28_C+2
	add	ax,[bx+36]
	adc	dx,[bx+38]
	add	ax,WORD PTR $S29_D
	adc	dx,WORD PTR $S29_D+2
	add	ax,-5215
	adc	dx,28377
	xchg	dh,dl
	xchg	dl,ah
	xchg	ah,al
	ROTLL
	mov	WORD PTR $S29_D,ax
	mov	WORD PTR $S29_D+2,dx
;|***   hh(C , D , A , B ,  5 , hs3);
	xor	ax,WORD PTR $S26_A
	xor	dx,si
	xor	ax,WORD PTR $S27_B
	xor	dx,WORD PTR $S27_B+2
	add	ax,[bx+20]
	adc	dx,[bx+22]
	add	ax,WORD PTR $S28_C
	adc	dx,WORD PTR $S28_C+2
	add	ax,-5215
	adc	dx,28377
	xchg	dh,dl
	xchg	dl,ah
	xchg	ah,al
	ROTLL
	ROTLL
	ROTLL
	mov	WORD PTR $S28_C,ax
	mov	WORD PTR $S28_C+2,dx
;|***   hh(B , C , D , A , 13 , hs4);
	xor	ax,WORD PTR $S29_D
	xor	dx,WORD PTR $S29_D+2
	xor	ax,WORD PTR $S26_A
	xor	dx,si
	add	ax,[bx+52]
	adc	dx,[bx+54]
	add	ax,WORD PTR $S27_B
	adc	dx,WORD PTR $S27_B+2
	add	ax,-5215
	adc	dx,28377
	xchg	ax,dx
	ROTRL
	mov	WORD PTR $S27_B,ax
	mov	WORD PTR $S27_B+2,dx
;|***   hh(A , B , C , D ,  3 , hs1);
	xor	ax,WORD PTR $S28_C
	xor	dx,WORD PTR $S28_C+2
	xor	ax,WORD PTR $S29_D
	xor	dx,WORD PTR $S29_D+2
	add	ax,[bx+12]
	adc	dx,[bx+14]
	add	ax,WORD PTR $S26_A
	adc	dx,si
	add	ax,-5215
	adc	dx,28377
	ROTLL
	ROTLL
	ROTLL
	mov	WORD PTR $S26_A,ax
	mov	si,dx
;|***   hh(D , A , B , C , 11 , hs2);
	xor	ax,WORD PTR $S27_B
	xor	dx,WORD PTR $S27_B+2
	xor	ax,WORD PTR $S28_C
	xor	dx,WORD PTR $S28_C+2
	add	ax,[bx+44]
	adc	dx,[bx+46]
	add	ax,WORD PTR $S29_D
	adc	dx,WORD PTR $S29_D+2
	add	ax,-5215
	adc	dx,28377
	xchg	dh,dl
	xchg	dl,ah
	xchg	ah,al
	ROTLL
	mov	WORD PTR $S29_D,ax
	mov	WORD PTR $S29_D+2,dx
;|***   hh(C , D , A , B ,  7 , hs3);
	xor	ax,WORD PTR $S26_A
	xor	dx,si
	xor	ax,WORD PTR $S27_B
	xor	dx,WORD PTR $S27_B+2
	add	ax,[bx+28]
	adc	dx,[bx+30]
	add	ax,WORD PTR $S28_C
	adc	dx,WORD PTR $S28_C+2
	add	ax,-5215
	adc	dx,28377
	xchg	dh,dl
	xchg	dl,ah
	xchg	ah,al
	ROTLL
	ROTLL
	ROTLL
	mov	WORD PTR $S28_C,ax
	mov	WORD PTR $S28_C+2,dx
;|***   hh(B , C , D , A , 15 , hs4);
	xor	ax,WORD PTR $S29_D
	xor	dx,WORD PTR $S29_D+2
	xor	ax,WORD PTR $S26_A
	xor	dx,si
	add	ax,[bx+60]
	adc	dx,[bx+62]
	add	ax,WORD PTR $S27_B
	adc	dx,WORD PTR $S27_B+2
	add	ax,-5215
	adc	dx,28377
	xchg	ax,dx
	ROTRL
;|***   MDp->buffer[1] += B;
	mov	bx,[bp+4]	;MDp
	add	[bx+4],ax
	adc	[bx+6],dx
;|***   MDp->buffer[0] += A;
	mov	ax,WORD PTR $S26_A
	mov	dx,si
	add	[bx],ax
	adc	[bx+2],dx
;|***   MDp->buffer[2] += C;
	mov	ax,WORD PTR $S28_C
	mov	dx,WORD PTR $S28_C+2
	add	[bx+8],ax
	adc	[bx+10],dx
;|***   MDp->buffer[3] += D;
	mov	ax,WORD PTR $S29_D
	mov	dx,WORD PTR $S29_D+2
	add	[bx+12],ax
	adc	[bx+14],dx
;|*** }
$EX24:	pop	si
	pop	di
	pop	bp
	ret	
_MDblock	ENDP

_TEXT	ENDS
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -