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

📄 blowfish.inc

📁 IA-32汇编原代码,blowfish.相比于c/c++写的原代码,效率更高
💻 INC
📖 第 1 页 / 共 2 页
字号:
		dd	2006996926, 3186142756, 1430667929, 3210227297
		dd	1314452623, 4074634658, 4101304120, 2273951170
		dd	1399257539, 3367210612, 3027628629, 1190975929
		dd	2062231137, 2333990788, 2221543033, 2438960610
		dd	1181637006,  548689776, 2362791313, 3372408396
		dd	3104550113, 3145860560,  296247880, 1970579870
		dd	3078560182, 3769228297, 1714227617, 3291629107
		dd	3898220290,  166772364, 1251581989,  493813264
		dd	 448347421,  195405023, 2709975567,  677966185
		dd	3703036547, 1463355134, 2715995803, 1338867538
		dd	1343315457, 2802222074, 2684532164,  233230375
		dd	2599980071, 2000651841, 3277868038, 1638401717
		dd	4028070440, 3237316320,    6314154,  819756386
		dd	 300326615,  590932579, 1405279636, 3267499572
		dd	3150704214, 2428286686, 3959192993, 3461946742
		dd	1862657033, 1266418056,  963775037, 2089974820
		dd	2263052895, 1917689273,  448879540, 3550394620
		dd	3981727096,  150775221, 3627908307, 1303187396
		dd	 508620638, 2975983352, 2726630617, 1817252668
		dd	1876281319, 1457606340,  908771278, 3720792119
		dd	3617206836, 2455994898, 1729034894, 1080033504
		
blowfishsbox4	dd	 976866871, 3556439503, 2881648439, 1522871579
		dd	1555064734, 1336096578, 3548522304, 2579274686
		dd	3574697629, 3205460757, 3593280638, 3338716283
		dd	3079412587,  564236357, 2993598910, 1781952180
		dd	1464380207, 3163844217, 3332601554, 1699332808
		dd	1393555694, 1183702653, 3581086237, 1288719814
		dd	 691649499, 2847557200, 2895455976, 3193889540
		dd	2717570544, 1781354906, 1676643554, 2592534050
		dd	3230253752, 1126444790, 2770207658, 2633158820
		dd	2210423226, 2615765581, 2414155088, 3127139286
		dd	 673620729, 2805611233, 1269405062, 4015350505
		dd	3341807571, 4149409754, 1057255273, 2012875353
		dd	2162469141, 2276492801, 2601117357,  993977747
		dd	3918593370, 2654263191,  753973209,   36408145
		dd	2530585658,   25011837, 3520020182, 2088578344
		dd	 530523599, 2918365339, 1524020338, 1518925132
		dd	3760827505, 3759777254, 1202760957, 3985898139
		dd	3906192525,  674977740, 4174734889, 2031300136
		dd	2019492241, 3983892565, 4153806404, 3822280332
		dd	 352677332, 2297720250,   60907813,   90501309
		dd	3286998549, 1016092578, 2535922412, 2839152426
		dd	 457141659,  509813237, 4120667899,  652014361
		dd	1966332200, 2975202805,   55981186, 2327461051
		dd	 676427537, 3255491064, 2882294119, 3433927263
		dd	1307055953,  942726286,  933058658, 2468411793
		dd	3933900994, 4215176142, 1361170020, 2001714738
		dd	2830558078, 3274259782, 1222529897, 1679025792
		dd	2729314320, 3714953764, 1770335741,  151462246
		dd	3013232138, 1682292957, 1483529935,  471910574
		dd	1539241949,  458788160, 3436315007, 1807016891
		dd	3718408830,  978976581, 1043663428, 3165965781
		dd	1927990952, 4200891579, 2372276910, 3208408903
		dd	3533431907, 1412390302, 2931980059, 4132332400
		dd	1947078029, 3881505623, 4168226417, 2941484381
		dd	1077988104, 1320477388,  886195818,   18198404
		dd	3786409000, 2509781533,  112762804, 3463356488
		dd	1866414978,  891333506,   18488651,  661792760
		dd	1628790961, 3885187036, 3141171499,  876946877
		dd	2693282273, 1372485963,  791857591, 2686433993
		dd	3759982718, 3167212022, 3472953795, 2716379847
		dd	 445679433, 3561995674, 3504004811, 3574258232
		dd	  54117162, 3331405415, 2381918588, 3769707343
		dd	4154350007, 1140177722, 4074052095,  668550556
		dd	3214352940,  367459370,  261225585, 2610173221
		dd	4209349473, 3468074219, 3265815641,  314222801
		dd	3066103646, 3808782860,  282218597, 3406013506
		dd	3773591054,  379116347, 1285071038,  846784868
		dd	2669647154, 3771962079, 3550491691, 2305946142
		dd	 453669953, 1268987020, 3317592352, 3279303384
		dd	3744833421, 2610507566, 3859509063,  266596637
		dd	3847019092,  517658769, 3462560207, 3443424879
		dd	 370717030, 4247526661, 2224018117, 4143653529
		dd	4112773975, 2788324899, 2477274417, 1456262402
		dd	2901442914, 1517677493, 1846949527, 2295493580
		dd	3734397586, 2176403920, 1280348187, 1908823572
		dd	3871786941,  846861322, 1172426758, 3287448474
		dd	3383383037, 1655181056, 3139813346,  901632758
		dd	1897031941, 2986607138, 3066810236, 3447102507
		dd	1393639104,  373351379,  950779232,  625454576
		dd	3124240540, 4148612726, 2007998917,  544563296
		dd	2244738638, 2330496472, 2058025392, 1291430526
		dd	 424198748,   50039436,   29584100, 3605783033
		dd	2429876329, 2791104160, 1057563949, 3255363231
		dd	3075367218, 3463963227, 1469046755,  985887462

ctx		blowfishctx	<>	

.data?

_datalr		dd	2h	dup(?)

.code

blowfish_init	proc	ptrIndata:DWORD, ptrIndata_length:DWORD

		pushad
		mov	esi,offset blowfishpbox
		mov	edi,offset ctx
		mov	ecx,256*4+18
		cld
		rep	movsd
		xor	ebx,ebx
		xor	edx,edx	
		xor	ebp,ebp
		mov	esi,[esp+28h]		; ptrIndata
@_r2:
		mov	ecx,4
@_r1:
		lodsb
		shl	ebx,8
		or	ebx,eax
		loop	@_r1
		xor	ebx,[blowfishpbox+edx]
		mov	[ctx.P+edx],ebx
		add	edx,4
		add	ebp,4
		cmp	edx,(_noRounds+2)*4
		jz	@_r3
		cmp	ebp,[esp+2ch]		; ptrIndata_length
		jl	@_r2
		xor	ebp,ebp
		mov	esi,[esp+28h]
		jmp	@_r2
@_r3:		
		xor	ebp,ebp
		mov	[_datalr],ebp
		mov	[_datalr+4],ebp
@_r4:
		push	offset _datalr			; datar
		push	offset _datalr
		call	blowfish_encrypt
		mov	[ctx.P+ebp*4],ecx
		mov	[ctx.P+ebp*4+4],edi
		add	ebp,2
		cmp	ebp,(_noRounds+2)
		jnz	@_r4
		
		xor	ebp,ebp
@_r5:
		push	offset _datalr
		push	offset _datalr
		call	blowfish_encrypt
		mov	[ctx.S+ebp*4],ecx
		mov	[ctx.S+ebp*4+4],edi
		add	ebp,2
		cmp	ebp,(256*4)
		jnz	@_r5	
		popad
		ret
		
blowfish_init	endp

blowfish_encrypt	proc	ptrIndata:DWORD, ptrOutdata:DWORD

		mov	ecx,ptrIndata	; xl
		mov	edi,[ecx+4]
		mov	ecx,[ecx]
		xor	edx,edx
@_r1:
		xor	ecx,[ctx.P+edx]
		push	ecx
		call	_F
		xor	edi,ebx
		xchg	ecx,edi
		add	edx,4
		cmp	edx,(_noRounds*4)
		jl	@_r1
		xchg	ecx,edi
		xor	ecx,[ctx.P+(_noRounds+1)*4]	; xl
		xor	edi,[ctx.P+(_noRounds)*4]		; xr
		mov	esi,ptrOutdata
		mov	[esi],ecx
		mov	[esi+4],edi
		ret
		
blowfish_encrypt	endp

blowfish_decrypt	proc	ptrIndata:DWORD, ptrOutdata:DWORD

		mov	ecx,ptrIndata	; xl
		mov	edi,[ecx+4]
		mov	ecx,[ecx]
		mov	edx,(_noRounds+1)*4
@_r1:
		xor	ecx,[ctx.P+edx]		; xl
		push	ecx
		call	_F
		xor	edi,ebx			; xr
		xchg	ecx,edi
		sub	edx,4
		cmp	edx,4
		ja	@_r1
		xchg	ecx,edi
		xor	edi,[ctx.P+4]
		xor	ecx,[ctx.P]
		mov	esi,ptrOutdata
		mov	[esi],ecx
		mov	[esi+4],edi
		ret
		
blowfish_decrypt	endp
		
_F		proc	ptrIndata:DWORD

		xor	eax,eax
		mov	al,byte ptr [ptrIndata+3]
		mov	ebx,[ctx.S+eax*4]
		mov	al,byte ptr [ptrIndata+2]
		add	ebx,[ctx.S+256*4+eax*4]
		mov	al,byte ptr [ptrIndata+1]
		xor	ebx,[ctx.S+256*4*2+eax*4]
		mov	al,byte ptr [ptrIndata]
		add	ebx,[ctx.S+256*4*3+eax*4]
		ret
		
_F		endp

⌨️ 快捷键说明

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