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

📄 cast256.inc

📁 Cast256算法软件.用汇编语言编写.
💻 INC
📖 第 1 页 / 共 2 页
字号:
		dd	    010428db7h, 08272a972h, 09270c4a8h, 0127de50bh, 0285ba1c8h, 03c62f44fh 
		dd	    035c0eaa5h, 0e805d231h, 0428929fbh, 0b4fcdf82h, 04fb66a53h, 00e7dc15bh
		dd	    01f081fabh, 0108618aeh, 0fcfd086dh, 0f9ff2889h, 0694bcc11h, 0236a5caeh 
		dd	    012deca4dh, 02c3f8cc5h, 0d2d02dfeh, 0f8ef5896h, 0e4cf52dah, 095155b67h 
		dd	    0494a488ch, 0b9b6a80ch, 05c8f82bch, 089d36b45h, 03a609437h, 0ec00c9a9h 
		dd	    044715253h, 00a874b49h, 0d773bc40h, 07c34671ch, 002717ef6h, 04feb5536h
		dd	    0a2d02fffh, 0d2bf60c4h, 0d43f03c0h, 050b4ef6dh, 007478cd1h, 0006e1888h 
		dd	    0a2e53f55h, 0b9e6d4bch, 0a2048016h, 097573833h, 0d7207d67h, 0de0f8f3dh 
		dd	    072f87b33h, 0abcc4f33h, 07688c55dh, 07b00a6b0h, 0947b0001h, 0570075d2h 
		dd	    0f9bb88f8h, 08942019eh, 04264a5ffh, 0856302e0h, 072dbd92bh, 0ee971b69h
		dd	    06ea22fdeh, 05f08ae2bh, 0af7a616dh, 0e5c98767h, 0cf1febd2h, 061efc8c2h 
		dd	    0f1ac2571h, 0cc8239c2h, 067214cb8h, 0b1e583d1h, 0b7dc3e62h, 07f10bdceh 
		dd	    0f90a5c38h, 00ff0443dh, 0606e6dc6h, 060543a49h, 05727c148h, 02be98a1dh 
		dd	    08ab41738h, 020e1be24h, 0af96da0fh, 068458425h, 099833be5h, 0600d457dh
		dd	    0282f9350h, 08334b362h, 0d91d1120h, 02b6d8da0h, 0642b1e31h, 09c305a00h 
		dd	    052bce688h, 01b03588ah, 0f7baefd5h, 04142ed9ch, 0a4315c11h, 083323ec5h 
		dd	    0dfef4636h, 0a133c501h, 0e9d3531ch, 0ee353783h
		
castsbox4	dd	    09db30420h, 01fb6e9deh, 0a7be7befh, 0d273a298h, 04a4f7bdbh, 064ad8c57h
		dd	    085510443h, 0fa020ed1h, 07e287affh, 0e60fb663h, 0095f35a1h, 079ebf120h
		dd	    0fd059d43h, 06497b7b1h, 0f3641f63h, 0241e4adfh, 028147f5fh, 04fa2b8cdh 
		dd	    0c9430040h, 00cc32220h, 0fdd30b30h, 0c0a5374fh, 01d2d00d9h, 024147b15h
		dd	    0ee4d111ah, 00fca5167h, 071ff904ch, 02d195ffeh, 01a05645fh, 00c13fefeh 
		dd	    0081b08cah, 005170121h, 080530100h, 0e83e5efeh, 0ac9af4f8h, 07fe72701h 
		dd	    0d2b8ee5fh, 006df4261h, 0bb9e9b8ah, 07293ea25h, 0ce84ffdfh, 0f5718801h 
		dd	    03dd64b04h, 0a26f263bh, 07ed48400h, 0547eebe6h, 0446d4ca0h, 06cf3d6f5h
		dd	    02649abdfh, 0aea0c7f5h, 036338cc1h, 0503f7e93h, 0d3772061h, 011b638e1h 
		dd	    072500e03h, 0f80eb2bbh, 0abe0502eh, 0ec8d77deh, 057971e81h, 0e14f6746h
		dd	    0c9335400h, 06920318fh, 0081dbb99h, 0ffc304a5h, 04d351805h, 07f3d5ce3h 
		dd	    0a6c866c6h, 05d5bcca9h, 0daec6feah, 09f926f91h, 09f46222fh, 03991467dh
		dd	    0a5bf6d8eh, 01143c44fh, 043958302h, 0d0214eebh, 0022083b8h, 03fb6180ch
		dd	    018f8931eh, 0281658e6h, 026486e3eh, 08bd78a70h, 07477e4c1h, 0b506e07ch
		dd	    0f32d0a25h, 079098b02h, 0e4eabb81h, 028123b23h, 069dead38h, 01574ca16h 
		dd	    0df871b62h, 0211c40b7h, 0a51a9ef9h, 00014377bh, 0041e8ac8h, 009114003h
		dd	    0bd59e4d2h, 0e3d156d5h, 04fe876d5h, 02f91a340h, 0557be8deh, 000eae4a7h
		dd	    00ce5c2ech, 04db4bba6h, 0e756bdffh, 0dd3369ach, 0ec17b035h, 006572327h 
		dd	    099afc8b0h, 056c8c391h, 06b65811ch, 05e146119h, 06e85cb75h, 0be07c002h 
		dd	    0c2325577h, 0893ff4ech, 05bbfc92dh, 0d0ec3b25h, 0b7801ab7h, 08d6d3b24h
		dd	    020c763efh, 0c366a5fch, 09c382880h, 00ace3205h, 0aac9548ah, 0eca1d7c7h 
		dd	    0041afa32h, 01d16625ah, 06701902ch, 09b757a54h, 031d477f7h, 09126b031h 
		dd	    036cc6fdbh, 0c70b8b46h, 0d9e66a48h, 056e55a79h, 0026a4cebh, 052437effh 
		dd	    02f8f76b4h, 00df980a5h, 08674cde3h, 0edda04ebh, 017a9be04h, 02c18f4dfh
		dd	    0b7747f9dh, 0ab2af7b4h, 0efc34d20h, 02e096b7ch, 01741a254h, 0e5b6a035h 
		dd	    0213d42f6h, 02c1c7c26h, 061c2f50fh, 06552daf9h, 0d2c231f8h, 025130f69h 
		dd	    0d8167fa2h, 00418f2c8h, 0001a96a6h, 00d1526abh, 063315c21h, 05e0a72ech 
		dd	    049bafefdh, 0187908d9h, 08d0dbd86h, 0311170a7h, 03e9b640ch, 0cc3e10d7h
		dd	    0d5cad3b6h, 00caec388h, 0f73001e1h, 06c728affh, 071eae2a1h, 01f9af36eh 
		dd	    0cfcbd12fh, 0c1de8417h, 0ac07be6bh, 0cb44a1d8h, 08b9b0f56h, 0013988c3h 
		dd	    0b1c52fcah, 0b4be31cdh, 0d8782806h, 012a3a4e2h, 06f7de532h, 058fd7eb6h
		dd	    0d01ee900h, 024adffc2h, 0f4990fc5h, 09711aac5h, 0001d7b95h, 082e5e7d2h
		dd	    0109873f6h, 000613096h, 0c32d9521h, 0ada121ffh, 029908415h, 07fbb977fh 
		dd	    0af9eb3dbh, 029c9ed2ah, 05ce2a465h, 0a730f32ch, 0d0aa3fe8h, 08a5cc091h 
		dd	    0d49e2ce7h, 00ce454a9h, 0d60acd86h, 0015f1919h, 077079103h, 0dea03af6h 
		dd	    078a8565eh, 0dee356dfh, 021f05cbeh, 08b75e387h, 0b3c50651h, 0b8a5c3efh
		dd	    0d8eeb6d2h, 0e523be77h, 0c2154529h, 02f69efdfh, 0afe67afbh, 0f470c4b2h
		dd	    0f3e0eb5bh, 0d6cc9876h, 039e4460ch, 01fda8538h, 01987832fh, 0ca007367h 
		dd	    0a99144f8h, 0296b299eh, 0492fc295h, 09266beabh, 0b5676e69h, 09bd3dddah
		dd	    0df7e052fh, 0db25701ch, 01b5e51eeh, 0f65324e6h, 06afce36ch, 00316cc04h
		dd	    08644213eh, 0b7dc59d0h, 07965291fh, 0ccd6fd43h, 041823979h, 0932bcdf6h
		dd	    0b657c34dh, 04edfd282h, 07ae5290ch, 03cb9536bh, 0851e20feh, 09833557eh
		dd	    013ecf0b0h, 0d3ffb372h, 03f85c5c1h, 00aef7ed2h

.data?

lk		dd	8	dup(?)
tm		dd	9	dup(?)
tr		dd	9	dup(?)
cast256_lkey	dd	96	dup(?)
_cm		dd	?
_cr		dd	?

.code

cast256_setkey	proc	ptrInkey:DWORD, ptrInkey_length:DWORD

		pushad
		mov	esi,[esp+28h]		; ptrInkey
		mov	ebp,[esp+2ch]		; ptrInkey_length
		shl	ebp,3
		shr	ebp,5
		xor	ecx,ecx
@_r1:
		mov	eax,[esi+ecx*4]
		bswap	eax
		mov	[lk+ecx*4],eax
		inc	ecx
		cmp	ecx,ebp
		jnz	@_r1
		lea	edi,[lk+ecx*4]
		mov	ecx,8
		sub	ecx,ebp
		xor	eax,eax
		rep	stosb
		xor	edi,edi
		mov	_cm,5a827999h
		mov	_cr,19
@_r4:		
		xor	ebp,ebp			; j
		mov	eax,_cm
		mov	ebx,_cr
		mov	[tm+ebp*4],eax
		mov	[tr+ebp*4],ebx
@_r2:
		mov	eax,[tm+ebp*4]
		add	eax,6ed9eba1h
		mov	_cm,eax
		mov	ebx,[tr+ebp*4]
		add	ebx,17
		mov	_cr,ebx
		inc	ebp
		mov	[tm+ebp*4],eax
		mov	[tr+ebp*4],ebx
		cmp	ebp,8
		jl	@_r2
		k_rnd	lk,tr,tm
		xor	ebp,ebp			; j
		mov	eax,_cm
		mov	ebx,_cr
		mov	[tm+ebp*4],eax
		mov	[tr+ebp*4],ebx
@_r3:
		mov	eax,[tm+ebp*4]
		add	eax,6ed9eba1h
		mov	_cm,eax
		mov	ebx,[tr+ebp*4]
		add	ebx,17
		mov	_cr,ebx
		inc	ebp
		mov	[tm+ebp*4],eax
		mov	[tr+ebp*4],ebx
		cmp	ebp,8
		jl	@_r3
		k_rnd	lk,tr,tm
		mov	eax,[lk]
		mov	ebx,[lk+8]
		mov	ecx,[lk+16]
		mov	edx,[lk+24]
		mov	[cast256_lkey+edi*4],eax
		mov	[cast256_lkey+edi*4+4],ebx
		mov	[cast256_lkey+edi*4+8],ecx
		mov	[cast256_lkey+edi*4+12],edx
		mov	eax,[lk+28]
		mov	ebx,[lk+20]
		mov	ecx,[lk+12]
		mov	edx,[lk+4]
		mov	[cast256_lkey+edi*4+16],eax
		mov	[cast256_lkey+edi*4+20],ebx
		mov	[cast256_lkey+edi*4+24],ecx
		mov	[cast256_lkey+edi*4+28],edx
		add	edi,8
		cmp	edi,96
		jl	@_r4
		popad
		ret
		
cast256_setkey	endp

cast256_encrypt	proc	ptrIndata:DWORD, ptrOutdata:DWORD

		pushad
		mov	esi,[esp+28h]		; ptrIndata
		mov	edi,[esp+2ch]		; ptrOutdata
		mov	eax,[esi]
		mov	ebx,[esi+4]
		mov	ecx,[esi+8]
		mov	edx,[esi+12]
		bswap	eax
		bswap	ebx
		bswap	ecx
		bswap	edx
		mov	[edi],eax
		mov	[edi+4],ebx
		mov	[edi+8],ecx
		mov	[edi+12],edx
		f_rnd	edi,0
		f_rnd	edi,8
		f_rnd	edi,16
		f_rnd	edi,24
		f_rnd	edi,32
		f_rnd	edi,40
		i_rnd	edi,48
		i_rnd	edi,56
		i_rnd	edi,64
		i_rnd	edi,72
		i_rnd	edi,80
		i_rnd	edi,88
		mov	eax,[edi]
		mov	ebx,[edi+4]
		mov	ecx,[edi+8]
		mov	edx,[edi+12]
		bswap	eax
		bswap	ebx
		bswap	ecx
		bswap	edx
		mov	[edi],eax
		mov	[edi+4],ebx
		mov	[edi+8],ecx
		mov	[edi+12],edx
		popad
		ret
		
cast256_encrypt	endp

cast256_decrypt	proc	ptrIndata:DWORD, ptrOutdata:DWORD

		pushad
		mov	esi,[esp+28h]		; ptrIndata
		mov	edi,[esp+2ch]		; ptrOutdata
		mov	eax,[esi]
		mov	ebx,[esi+4]
		mov	ecx,[esi+8]
		mov	edx,[esi+12]
		bswap	eax
		bswap	ebx
		bswap	ecx
		bswap	edx
		mov	[edi],eax
		mov	[edi+4],ebx
		mov	[edi+8],ecx
		mov	[edi+12],edx
		f_rnd	edi,88
		f_rnd	edi,80
		f_rnd	edi,72
		f_rnd	edi,64
		f_rnd	edi,56
		f_rnd	edi,48
		i_rnd	edi,40
		i_rnd	edi,32
		i_rnd	edi,24
		i_rnd	edi,16
		i_rnd	edi,8
		i_rnd	edi,0
		mov	eax,[edi]
		mov	ebx,[edi+4]
		mov	ecx,[edi+8]
		mov	edx,[edi+12]
		bswap	eax
		bswap	ebx
		bswap	ecx
		bswap	edx
		mov	[edi],eax
		mov	[edi+4],ebx
		mov	[edi+8],ecx
		mov	[edi+12],edx
		popad
		ret
		
cast256_decrypt	endp

⌨️ 快捷键说明

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