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

📄 cast256.inc

📁 Cast256算法软件.用汇编语言编写.
💻 INC
📖 第 1 页 / 共 2 页
字号:
comment		*

Algorithm		: CAST-256	( Block Cipher )
Block		: 16bytes
KeySize		: 128/192/256 bits

Abstract		:  This is an independent implementation of the encryption algorithm:                                                                       
        		    CAST-256 by Carlisle Adams of Entrust Tecnhologies            
                                    which is a candidate algorithm in the Advanced Encryption Standard    
  		    programme of the US National Institute of Standards and Technology.                                                                          
		    Copyright in this implementation is held by Dr B R Gladman but I      
		    hereby give permission for its free direct or derivative use subject  
		    to acknowledgment of its origin and compliance with any conditions    
		    that the originators of the algorithm place on its exploitation.      
                                    Dr Brian Gladman (gladman@seven77.demon.co.uk) 14th January 1999
                                    
Usage		:  invoke cast256_setkey,addr ptrInkey,ptrInkey_length	( SetKey )

		   ex) invoke cast256_setkey,addr ptrInkey,16	( 128 bits )
		         invoke cast256_setkey,addr ptrInkey,24	( 192 bits )
		         invoke cast256_setkey,addr ptrInkey,32	( 256 bits )
		         
		   invoke cast256_encrypt,addr ptrIndata,addr ptrOutdata 	( 16 bytes Encrypt )
		   invoke cast256_decrypt,addr ptrIndata,addr ptrOutdata		( 16 bytes Decrypt )
		   
Coded by x3chun	(2004.03.01) 
		(  x3chun@korea.com  or  x3chun@hanyang.ac.kr ) ( http://x3chun.wo.to )
		
comment		*

f1		macro	y,x,kr,km

		mov	eax,km
		add	eax,x
		mov	ecx,kr
		rol	eax,cl		; t
		mov	ebx,eax		; t
		shr	ebx,(8*3)
		mov	ecx,[castsbox1+ebx*4]	; u
		mov	ebx,eax
		shr	ebx,(8*2)
		and	ebx,0FFh
		xor	ecx,[castsbox2+ebx*4]
		mov	ebx,eax
		shr	ebx,(8*1)
		and	ebx,0FFh
		sub	ecx,[castsbox3+ebx*4]
		mov	ebx,eax
		and	ebx,0FFh
		add	ecx,[castsbox4+ebx*4]
		xor	y,ecx
		
endm

f2		macro	y,x,kr,km

		mov	eax,km
		xor	eax,x
		mov	ecx,kr
		rol	eax,cl
		mov	ebx,eax		; t
		shr	ebx,(8*3)
		mov	ecx,[castsbox1+ebx*4]	; u
		mov	ebx,eax
		shr	ebx,(8*2)
		and	ebx,0FFh
		sub	ecx,[castsbox2+ebx*4]
		mov	ebx,eax
		shr	ebx,(8*1)
		and	ebx,0FFh
		add	ecx,[castsbox3+ebx*4]
		mov	ebx,eax
		and	ebx,0FFh
		xor	ecx,[castsbox4+ebx*4]
		xor	y,ecx
		
endm

f3		macro	y,x,kr,km

		mov	eax,km
		sub	eax,x
		mov	ecx,kr
		rol	eax,cl
		mov	ebx,eax		; t
		shr	ebx,(8*3)
		mov	ecx,[castsbox1+ebx*4]	; u
		mov	ebx,eax
		shr	ebx,(8*2)
		and	ebx,0FFh
		add	ecx,[castsbox2+ebx*4]
		mov	ebx,eax
		shr	ebx,(8*1)
		and	ebx,0FFh
		xor	ecx,[castsbox3+ebx*4]
		mov	ebx,eax
		and	ebx,0FFh
		sub	ecx,[castsbox4+ebx*4]
		xor	y,ecx
endm

k_rnd		macro	k,tr,tm

		f1	k[24],k[28],tr[0],tm[0]
		f2	k[20],k[24],tr[4],tm[4]
		f3	k[16],k[20],tr[8],tm[8]
		f1	k[12],k[16],tr[12],tm[12]
		f2	k[8],k[12],tr[16],tm[16]
		f3	k[4],k[8],tr[20],tm[20]
		f1	k[0],k[4],tr[24],tm[24]
		f2	k[28],k[0],tr[28],tm[28]
		
endm

f_rnd		macro	x,n

		f1	[edi+8],[edi+12],cast256_lkey[n*4],cast256_lkey[n*4+16]
		f2	[edi+4],[edi+8],cast256_lkey[n*4+4],cast256_lkey[n*4+20]
		f3	[edi+0],[edi+4],cast256_lkey[n*4+8],cast256_lkey[n*4+24]
		f1	[edi+12],[edi+0],cast256_lkey[n*4+12],cast256_lkey[n*4+28]
endm

i_rnd		macro	x,n

		f1	[edi+12],[edi+0],cast256_lkey[n*4+12],cast256_lkey[n*4+28]
		f3	[edi+0],[edi+4],cast256_lkey[n*4+8],cast256_lkey[n*4+24]
		f2	[edi+4],[edi+8],cast256_lkey[n*4+4],cast256_lkey[n*4+20]
		f1	[edi+8],[edi+12],cast256_lkey[n*4],cast256_lkey[n*4+16]
		
endm

cast256_setkey	proto	:DWORD, :DWORD
cast256_encrypt	proto	:DWORD, :DWORD
cast256_decrypt	proto	:DWORD, :DWORD

.data

castsbox1	dd	    030fb40d4h, 09fa0ff0bh, 06beccd2fh, 03f258c7ah, 01e213f2fh, 09C004dd3h
		dd	    06003e540h, 0cf9fc949h, 0bfd4af27h, 088bbbdb5h, 0e2034090h, 098d09675h
		dd	    06e63a0e0h, 015c361d2h, 0c2e7661dh, 022d4ff8eh, 028683b6fh, 0c07fd059h
		dd	    0ff2379c8h, 0775f50e2h, 043c340d3h, 0df2f8656h, 0887ca41ah, 0a2d2bd2dh
		dd	    0a1c9e0d6h, 0346c4819h, 061b76d87h, 022540f2fh, 02abe32e1h, 0aa54166bh
		dd	    022568e3ah, 0a2d341d0h, 066db40c8h, 0a784392fh, 0004dff2fh, 02db9d2deh
		dd	    097943fach, 04a97c1d8h, 0527644b7h, 0b5f437a7h, 0b82cbaefh, 0d751d159h
		dd	    06ff7f0edh, 05a097a1fh, 0827b68d0h, 090ecf52eh, 022b0c054h, 0bc8e5935h
		dd	    04b6d2f7fh, 050bb64a2h, 0d2664910h, 0bee5812dh, 0b7332290h, 0e93b159fh
		dd	    0b48ee411h, 04bff345dh, 0fd45c240h, 0ad31973fh, 0c4f6d02eh, 055fc8165h
		dd	    0d5b1caadh, 0a1ac2daeh, 0a2d4b76dh, 0c19b0C50h, 0882240f2h, 00c6e4f38h
		dd	    0a4e4bfd7h, 04f5ba272h, 0564c1d2fh, 0c59c5319h, 0b949e354h, 0b04669feh
		dd	    0b1b6ab8ah, 0c71358ddh, 06385c545h, 0110f935dh, 057538ad5h, 06a390493h 
		dd	    0e63d37e0h, 02a54f6b3h, 03a787d5fh, 06276a0b5h, 019a6fcdfh, 07a42206ah 
		dd	    029f9d4d5h, 0f61b1891h, 0bb72275eh, 0aa508167h, 038901091h, 0c6b505ebh 
		dd	    084c7cb8ch, 02ad75a0fh, 0874a1427h, 0a2d1936bh, 02ad286afh, 0aa56d291h
		dd	    0d7894360h, 0425c750dh, 093b39e26h, 0187184c9h, 06c00b32dh, 073e2bb14h 
		dd	    0a0bebc3ch, 054623779h, 064459eabh, 03f328b82h, 07718cf82h, 059a2cea6h
		dd	    004ee002eh, 089fe78e6h, 03fab0950h, 0325ff6C2h, 081383f05h, 06963c5c8h
		dd	    076cb5ad6h, 0d49974c9h, 0ca180dcfh, 0380782d5h, 0c7fa5cf6h, 08ac31511h
		dd	    035e79e13h, 047da91d0h, 0f40f9086h, 0a7e2419eh, 031366241h, 0051ef495h 
		dd	    0aa573b04h, 04a805d8dh, 0548300d0h, 000322a3ch, 0bf64cddfh, 0ba57a68eh
		dd	    075c6372bh, 050afd341h, 0a7c13275h, 0915a0bf5h, 06b54bfabh, 02b0b1426h 
		dd	    0ab4cc9d7h, 0449ccd82h, 0f7fbf265h, 0ab85c5f3h, 01b55db94h, 0aad4e324h 
		dd	    0cfa4bd3fh, 02deaa3e2h, 09e204d02h, 0c8bd25ach, 0eadf55b3h, 0d5bd9e98h 
		dd	    0e31231b2h, 02ad5ad6ch, 0954329deh, 0adbe4528h, 0d8710f69h, 0aa51c90fh
		dd	    0aa786bf6h, 022513f1eh, 0aa51a79bh, 02ad344cch, 07b5a41f0h, 0d37cfbadh 
		dd	    01b069505h, 041ece491h, 0b4c332e6h, 0032268d4h, 0c9600acch, 0ce387e6dh 
		dd	    0bf6bb16ch, 06a70fb78h, 00d03d9c9h, 0d4df39deh, 0e01063dah, 04736f464h 
		dd	    05ad328d8h, 0b347cc96h, 075bb0fc3h, 098511bfbh, 04ffbcc35h, 0b58bcf6ah
		dd	    0e11f0abch, 0bfc5fe4ah, 0a70aec10h, 0ac39570ah, 03f04442fh, 06188b153h 
		dd	    0e0397a2eh, 05727cb79h, 09ceb418fh, 01cacd68dh, 02ad37c96h, 00175cb9dh 
		dd	    0c69dff09h, 0c75b65f0h, 0d9db40d8h, 0ec0e7779h, 04744ead4h, 0b11c3274h 
		dd	    0dd24cb9eh, 07e1c54bdh, 0f01144f9h, 0d2240eb1h, 09675b3fdh, 0a3ac3755h
		dd	    0d47c27afh, 051c85f4dh, 056907596h, 0a5bb15e6h, 0580304f0h, 0ca042cf1h 
		dd	    0011a37eah, 08dbfaadbh, 035ba3e4ah, 03526ffa0h, 0c37b4d09h, 0bc306ed9h
		dd	    098a52666h, 05648f725h, 0ff5e569dh, 00ced63d0h, 07c63b2cfh, 0700b45e1h 
		dd	    0d5ea50f1h, 085a92872h, 0af1fbda7h, 0d4234870h, 0a7870bf3h, 02d3b4d79h
		dd	    042e04198h, 00cd0ede7h, 026470db8h, 0f881814Ch, 0474d6ad7h, 07c0c5e5ch 
		dd	    0d1231959h, 0381b7298h, 0f5d2f4dbh, 0ab838653h, 06e2f1e23h, 083719c9eh
		dd	    0bd91e046h, 09a56456eh, 0dc39200ch, 020c8c571h, 0962bda1ch, 0e1e696ffh 
		dd	    0b141ab08h, 07cca89b9h, 01a69e783h, 002cc4843h, 0a2f7c579h, 0429ef47dh 
		dd	    0427b169ch, 05ac9f049h, 0dd8f0f00h, 05c8165bfh
		
castsbox2	dd	    01f201094h, 0ef0ba75bh, 069e3cf7eh, 0393f4380h, 0fe61cf7ah, 0eec5207ah
		dd	    055889c94h, 072fc0651h, 0ada7ef79h, 04e1d7235h, 0d55a63ceh, 0de0436bah
		dd	    099c430efh, 05f0c0794h, 018dcdb7dh, 0a1d6eff3h, 0a0b52f7bh, 059e83605h
		dd	    0ee15b094h, 0e9ffd909h, 0dc440086h, 0ef944459h, 0ba83ccb3h, 0e0c3cdfbh
		dd	    0d1da4181h, 03b092ab1h, 0f997f1c1h, 0a5e6cf7bh, 001420ddbh, 0e4e7ef5bh 
		dd	    025a1ff41h, 0e180f806h, 01fc41080h, 0179bee7ah, 0d37ac6a9h, 0fe5830a4h 
		dd	    098de8b7fh, 077e83f4eh, 079929269h, 024fa9f7bh, 0e113c85bh, 0acc40083h 
		dd	    0d7503525h, 0f7ea615fh, 062143154h, 00d554b63h, 05d681121h, 0c866c359h
		dd	    03d63cf73h, 0cee234c0h, 0d4d87e87h, 05c672b21h, 0071f6181h, 039f7627fh 
		dd	    0361e3084h, 0e4eb573bh, 0602f64a4h, 0d63acd9ch, 01bbc4635h, 09e81032dh 
		dd	    02701f50ch, 099847ab4h, 0a0e3df79h, 0ba6cf38ch, 010843094h, 02537a95eh 
		dd	    0f46f6ffeh, 0a1ff3b1fh, 0208cfb6ah, 08f458c74h, 0d9e0a227h, 04ec73a34h
		dd	    0fc884f69h, 03e4de8dfh, 0ef0e0088h, 03559648dh, 08a45388ch, 01d804366h 
		dd	    0721d9bfdh, 0a58684bbh, 0e8256333h, 0844e8212h, 0128d8098h, 0fed33fb4h 
		dd	    0ce280ae1h, 027e19ba5h, 0d5a6c252h, 0e49754bdh, 0c5d655ddh, 0eb667064h 
		dd	    077840b4dh, 0a1b6a801h, 084db26a9h, 0e0b56714h, 021f043b7h, 0e5d05860h
		dd	    054f03084h, 0066ff472h, 0a31aa153h, 0dadc4755h, 0b5625dbfh, 068561be6h 
		dd	    083ca6b94h, 02d6ed23bh, 0eccf01dbh, 0a6d3d0bah, 0b6803d5ch, 0af77a709h 
		dd	    033b4a34ch, 0397bc8d6h, 05ee22b95h, 05f0e5304h, 081ed6f61h, 020e74364h 
		dd	    0b45e1378h, 0de18639bh, 0881ca122h, 0b96726d1h, 08049a7e8h, 022b7da7bh
		dd	    05e552d25h, 05272d237h, 079d2951ch, 0c60d894ch, 0488cb402h, 01ba4fe5bh 
		dd	    0a4b09f6bh, 01ca815cfh, 0a20c3005h, 08871df63h, 0b9de2fcbh, 00cc6c9e9h 
		dd	    00beeff53h, 0e3214517h, 0b4542835h, 09f63293ch, 0ee41e729h, 06e1d2d7ch 
		dd	    050045286h, 01e6685f3h, 0f33401c6h, 030a22c95h, 031a70850h, 060930f13h
		dd	    073f98417h, 0a1269859h, 0ec645c44h, 052c877a9h, 0cdff33a6h, 0a02b1741h
		dd	    07cbad9a2h, 02180036fh, 050d99c08h, 0cb3f4861h, 0c26bd765h, 064a3f6abh 
		dd	    080342676h, 025a75e7bh, 0e4e6d1fch, 020c710e6h, 0cdf0b680h, 017844d3bh 
		dd	    031eef84dh, 07e0824e4h, 02ccb49ebh, 0846a3baeh, 08ff77888h, 0ee5d60f6h
		dd	    07af75673h, 02fdd5cdbh, 0a11631c1h, 030f66f43h, 0b3faec54h, 0157fd7fah 
		dd	    0ef8579cch, 0d152de58h, 0db2ffd5eh, 08f32ce19h, 0306af97ah, 002f03ef8h 
		dd	    099319ad5h, 0c242fa0fh, 0a7e3ebb0h, 0c68e4906h, 0b8da230ch, 080823028h 
		dd	    0dcdef3c8h, 0d35fb171h, 0088a1bc8h, 0bec0c560h, 061a3c9e8h, 0bca8f54dh
		dd	    0c72feffah, 022822e99h, 082c570b4h, 0d8d94e89h, 08b1c34bch, 0301e16e6h
		dd	    0273be979h, 0b0ffeaa6h, 061d9b8c6h, 000b24869h, 0b7ffce3fh, 008dc283bh 
		dd	    043daf65ah, 0f7e19798h, 07619b72fh, 08f1c9ba4h, 0dc8637a0h, 016a7d3b1h 
		dd	    09fc393b7h, 0a7136eebh, 0c6bcc63eh, 01a513742h, 0ef6828bch, 0520365d6h
		dd	    02d6a77abh, 03527ed4bh, 0821fd216h, 0095c6e2eh, 0db92f2fbh, 05eea29cbh 
		dd	    0145892f5h, 091584f7fh, 05483697bh, 02667a8cch, 085196048h, 08c4baceah 
		dd	    0833860d4h, 00d23e0f9h, 06c387e8ah, 00ae6d249h, 0b284600ch, 0d835731dh 
		dd	    0dcb1c647h, 0ac4c56eah, 03ebd81b3h, 0230eabb0h, 06438bc87h, 0f0b5b1fah
		dd	    08f5ea2b3h, 0fc184642h, 00a036b7ah, 04fb089bdh, 0649da589h, 0a345415eh 
		dd	    05c038323h, 03e5d3bb9h, 043d79572h, 07e6dd07ch, 006dfdf1eh, 06c6cc4efh 
		dd	    07160a539h, 073bfbe70h, 083877605h, 04523ecf1h
		
castsbox3	dd	    08defc240h, 025fa5d9fh, 0eb903dbfh, 0e810c907h, 047607fffh, 0369fe44bh
		dd	    08c1fc644h, 0aececa90h, 0beb1f9bfh, 0eefbcaeah, 0e8cf1950h, 051df07aeh 
		dd	    0920e8806h, 0f0ad0548h, 0e13c8d83h, 0927010d5h, 011107d9fh, 007647db9h
		dd	    0b2e3e4d4h, 03d4f285eh, 0b9afa820h, 0fade82e0h, 0a067268bh, 08272792eh
		dd	    0553fb2c0h, 0489ae22bh, 0d4ef9794h, 0125e3fbch, 021fffceeh, 0825b1bfdh
		dd	    09255c5edh, 01257a240h, 04e1a8302h, 0bae07fffh, 0528246e7h, 08e57140eh
		dd	    03373f7bfh, 08c9f8188h, 0a6fc4ee8h, 0c982b5a5h, 0a8c01db7h, 0579fc264h
		dd	    067094f31h, 0f2bd3f5fh, 040fff7c1h, 01fb78dfch, 08e6bd2c1h, 0437be59bh
		dd	    099b03dbfh, 0b5dbc64bh, 0638dc0e6h, 055819d99h, 0a197c81ch, 04a012d6eh
		dd	    0c5884a28h, 0ccc36f71h, 0b843c213h, 06c0743f1h, 08309893ch, 00feddd5fh
		dd	    02f7fe850h, 0d7c07f7eh, 002507fbfh, 05afb9a04h, 0a747d2d0h, 01651192eh 
		dd	    0af70bf3eh, 058c31380h, 05f98302eh, 0727cc3c4h, 00a0fb402h, 00f7fef82h
		dd	    08c96fdadh, 05d2c2aaeh, 08ee99a49h, 050da88b8h, 08427f4a0h, 01eac5790h
		dd	    0796fb449h, 08252dc15h, 0efbd7d9bh, 0a672597dh, 0ada840d8h, 045f54504h 
		dd	    0fa5d7403h, 0e83ec305h, 04f91751ah, 0925669c2h, 023efe941h, 0a903f12eh 
		dd	    060270df2h, 00276e4b6h, 094fd6574h, 0927985b2h, 08276dbcbh, 002778176h
		dd	    0f8af918dh, 04e48f79eh, 08f616ddfh, 0e29d840eh, 0842f7d83h, 0340ce5c8h 
		dd	    096bbb682h, 093b4b148h, 0ef303cabh, 0984faf28h, 0779faf9bh, 092dc560dh 
		dd	    0224d1e20h, 08437aa88h, 07d29dc96h, 02756d3dch, 08b907ceeh, 0b51fd240h 
		dd	    0e7c07ce3h, 0e566b4a1h, 0c3e9615eh, 03cf8209dh, 06094d1e3h, 0cd9ca341h
		dd	    05c76460eh, 000ea983bh, 0d4d67881h, 0fd47572ch, 0f76cedd9h, 0bda8229ch 
		dd	    0127dadaah, 0438a074eh, 01f97c090h, 0081bdb8ah, 093a07ebeh, 0b938ca15h
		dd	    097b03cffh, 03dc2c0f8h, 08d1ab2ech, 064380e51h, 068cc7bfbh, 0d90f2788h 
		dd	    012490181h, 05de5ffd4h, 0dd7ef86ah, 076a2e214h, 0b9a40368h, 0925d958fh
		dd	    04b39fffah, 0ba39aee9h, 0a4ffd30bh, 0faf7933bh, 06d498623h, 0193cbcfah 
		dd	    027627545h, 0825cf47ah, 061bd8ba0h, 0d11e42d1h, 0cead04f4h, 0127ea392h 

⌨️ 快捷键说明

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