Register for your free account! | Forgot your password?

You last visited: Today at 08:08

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[MASM] - Blowfish

Discussion on [MASM] - Blowfish within the Coding Snippets forum part of the Coding Releases category.

Reply
 
Old   #1
 
​Tension's Avatar
 
elite*gold: 110
Join Date: Jun 2013
Posts: 599
Received Thanks: 510
[MASM] - Blowfish

Hey com,

für mein neues Projekt brauch ich den Blowfish-Algorithmus, also hab ich mich hingesetzt und ihn in MASM geschrieben.
Er sollte einwandfrei funktionieren ( bei mir tut er das zumindest ).
Hab es auch nochmal als .txt angehangen.

Blowfish.asm
Code:
ifndef	_BLOWFISH_ASM
_BLOWFISH_ASM equ<1>

.const

BLOWFISH_Init		proto	:DWORD, :DWORD
BLOWFISH_F			proto	:DWORD
BLOWFISH_Encrypt	proto	:DWORD, :DWORD
BLOWFISH_Decrypt	proto	:DWORD, :DWORD

BLOWFISH_N			equ	16

;Original P
BLOWFISH_P_C		DWORD	0243F6A88h, 085A308D3h, 013198A2Eh, 003707344h
        			DWORD	0A4093822h, 0299F31D0h, 0082EFA98h, 0EC4E6C89h
       				DWORD	0452821E6h, 038D01377h, 0BE5466CFh, 034E90C6Ch
        			DWORD	0C0AC29B7h, 0C97C50DDh, 03F84D5B5h, 0B5470917h
        			DWORD	09216D5D9h, 08979FB1Bh
;Original S-Box
					;Box 1
BLOWFISH_S_C		DWORD   0D1310BA6h, 098DFB5ACh, 02FFD72DBh, 0D01ADFB7h
           			DWORD   0B8E1AFEDh, 06A267E96h, 0BA7C9045h, 0F12C7F99h
           			DWORD   024A19947h, 0B3916CF7h, 00801F2E2h, 0858EFC16h
           			DWORD   0636920D8h, 071574E69h, 0A458FEA3h, 0F4933D7Eh
           			DWORD   00D95748Fh, 0728EB658h, 0718BCD58h, 082154AEEh
           			DWORD   07B54A41Dh, 0C25A59B5h, 09C30D539h, 02AF26013h
           			DWORD   0C5D1B023h, 0286085F0h, 0CA417918h, 0B8DB38EFh
           			DWORD   08E79DCB0h, 0603A180Eh, 06C9E0E8Bh, 0B01E8A3Eh
           			DWORD   0D71577C1h, 0BD314B27h, 078AF2FDAh, 055605C60h
           			DWORD   0E65525F3h, 0AA55AB94h, 057489862h, 063E81440h
           			DWORD   055CA396Ah, 02AAB10B6h, 0B4CC5C34h, 01141E8CEh
           			DWORD   0A15486AFh, 07C72E993h, 0B3EE1411h, 0636FBC2Ah
           			DWORD   02BA9C55Dh, 0741831F6h, 0CE5C3E16h, 09B87931Eh
           			DWORD   0AFD6BA33h, 06C24CF5Ch, 07A325381h, 028958677h
           			DWORD   03B8F4898h, 06B4BB9AFh, 0C4BFE81Bh, 066282193h
           			DWORD   061D809CCh, 0FB21A991h, 0487CAC60h, 05DEC8032h
           			DWORD   0EF845D5Dh, 0E98575B1h, 0DC262302h, 0EB651B88h
           			DWORD   023893E81h, 0D396ACC5h, 00F6D6FF3h, 083F44239h
           			DWORD   02E0B4482h, 0A4842004h, 069C8F04Ah, 09E1F9B5Eh
           			DWORD   021C66842h, 0F6E96C9Ah, 0670C9C61h, 0ABD388F0h
           			DWORD   06A51A0D2h, 0D8542F68h, 0960FA728h, 0AB5133A3h
           			DWORD   06EEF0B6Ch, 0137A3BE4h, 0BA3BF050h, 07EFB2A98h
           			DWORD   0A1F1651Dh, 039AF0176h, 066CA593Eh, 082430E88h
           			DWORD   08CEE8619h, 0456F9FB4h, 07D84A5C3h, 03B8B5EBEh
           			DWORD   0E06F75D8h, 085C12073h, 0401A449Fh, 056C16AA6h
           			DWORD   04ED3AA62h, 0363F7706h, 01BFEDF72h, 0429B023Dh
           			DWORD   037D0D724h, 0D00A1248h, 0DB0FEAD3h, 049F1C09Bh
           			DWORD   0075372C9h, 080991B7Bh, 025D479D8h, 0F6E8DEF7h
           			DWORD   0E3FE501Ah, 0B6794C3Bh, 0976CE0BDh, 004C006BAh
           			DWORD   0C1A94FB6h, 0409F60C4h, 05E5C9EC2h, 0196A2463h
           			DWORD   068FB6FAFh, 03E6C53B5h, 01339B2EBh, 03B52EC6Fh
           			DWORD   06DFC511Fh, 09B30952Ch, 0CC814544h, 0AF5EBD09h
           			DWORD   0BEE3D004h, 0DE334AFDh, 0660F2807h, 0192E4BB3h
           			DWORD   0C0CBA857h, 045C8740Fh, 0D20B5F39h, 0B9D3FBDBh
           			DWORD   05579C0BDh, 01A60320Ah, 0D6A100C6h, 0402C7279h
           			DWORD   0679F25FEh, 0FB1FA3CCh, 08EA5E9F8h, 0DB3222F8h
           			DWORD   03C7516DFh, 0FD616B15h, 02F501EC8h, 0AD0552ABh
           			DWORD   0323DB5FAh, 0FD238760h, 053317B48h, 03E00DF82h
           			DWORD   09E5C57BBh, 0CA6F8CA0h, 01A87562Eh, 0DF1769DBh
           			DWORD   0D542A8F6h, 0287EFFC3h, 0AC6732C6h, 08C4F5573h
           			DWORD   0695B27B0h, 0BBCA58C8h, 0E1FFA35Dh, 0B8F011A0h
           			DWORD   010FA3D98h, 0FD2183B8h, 04AFCB56Ch, 02DD1D35Bh
           			DWORD   09A53E479h, 0B6F84565h, 0D28E49BCh, 04BFB9790h
           			DWORD   0E1DDF2DAh, 0A4CB7E33h, 062FB1341h, 0CEE4C6E8h
           			DWORD   0EF20CADAh, 036774C01h, 0D07E9EFEh, 02BF11FB4h
           			DWORD   095DBDA4Dh, 0AE909198h, 0EAAD8E71h, 06B93D5A0h
           			DWORD   0D08ED1D0h, 0AFC725E0h, 08E3C5B2Fh, 08E7594B7h
           			DWORD   08FF6E2FBh, 0F2122B64h, 08888B812h, 0900DF01Ch
           			DWORD   04FAD5EA0h, 0688FC31Ch, 0D1CFF191h, 0B3A8C1ADh
           			DWORD   02F2F2218h, 0BE0E1777h, 0EA752DFEh, 08B021FA1h
           			DWORD   0E5A0CC0Fh, 0B56F74E8h, 018ACF3D6h, 0CE89E299h
           			DWORD   0B4A84FE0h, 0FD13E0B7h, 07CC43B81h, 0D2ADA8D9h
           			DWORD   0165FA266h, 080957705h, 093CC7314h, 0211A1477h
           			DWORD   0E6AD2065h, 077B5FA86h, 0C75442F5h, 0FB9D35CFh
           			DWORD   0EBCDAF0Ch, 07B3E89A0h, 0D6411BD3h, 0AE1E7E49h
           			DWORD   000250E2Dh, 02071B35Eh, 0226800BBh, 057B8E0AFh
           			DWORD   02464369Bh, 0F009B91Eh, 05563911Dh, 059DFA6AAh
           			DWORD   078C14389h, 0D95A537Fh, 0207D5BA2h, 002E5B9C5h
           			DWORD   083260376h, 06295CFA9h, 011C81968h, 04E734A41h
           			DWORD   0B3472DCAh, 07B14A94Ah, 01B510052h, 09A532915h
           			DWORD   0D60F573Fh, 0BC9BC6E4h, 02B60A476h, 081E67400h
           			DWORD   008BA6FB5h, 0571BE91Fh, 0F296EC6Bh, 02A0DD915h
           			DWORD   0B6636521h, 0E7B9F9B6h, 0FF34052Eh, 0C5855664h
           			DWORD   053B02D5Dh, 0A99F8FA1h, 008BA4799h, 06E85076Ah
					;Box 2
					DWORD	04B7A70E9h, 0B5B32944h, 0DB75092Eh, 0C4192623h
           			DWORD   0AD6EA6B0h, 049A7DF7Dh, 09CEE60B8h, 08FEDB266h
           			DWORD   0ECAA8C71h, 0699A17FFh, 05664526Ch, 0C2B19EE1h
           			DWORD   0193602A5h, 075094C29h, 0A0591340h, 0E4183A3Eh
           			DWORD   03F54989Ah, 05B429D65h, 06B8FE4D6h, 099F73FD6h
           			DWORD   0A1D29C07h, 0EFE830F5h, 04D2D38E6h, 0F0255DC1h
           			DWORD   04CDD2086h, 08470EB26h, 06382E9C6h, 0021ECC5Eh
           			DWORD   009686B3Fh, 03EBAEFC9h, 03C971814h, 06B6A70A1h
           			DWORD   0687F3584h, 052A0E286h, 0B79C5305h, 0AA500737h
           			DWORD   03E07841Ch, 07FDEAE5Ch, 08E7D44ECh, 05716F2B8h
           			DWORD   0B03ADA37h, 0F0500C0Dh, 0F01C1F04h, 00200B3FFh
           			DWORD   0AE0CF51Ah, 03CB574B2h, 025837A58h, 0DC0921BDh
           			DWORD   0D19113F9h, 07CA92FF6h, 094324773h, 022F54701h
           			DWORD   03AE5E581h, 037C2DADCh, 0C8B57634h, 09AF3DDA7h
           			DWORD   0A9446146h, 00FD0030Eh, 0ECC8C73Eh, 0A4751E41h
           			DWORD   0E238CD99h, 03BEA0E2Fh, 03280BBA1h, 0183EB331h
           			DWORD   04E548B38h, 04F6DB908h, 06F420D03h, 0F60A04BFh
           			DWORD   02CB81290h, 024977C79h, 05679B072h, 0BCAF89AFh
           			DWORD   0DE9A771Fh, 0D9930810h, 0B38BAE12h, 0DCCF3F2Eh
           			DWORD   05512721Fh, 02E6B7124h, 0501ADDE6h, 09F84CD87h
           			DWORD   07A584718h, 07408DA17h, 0BC9F9ABCh, 0E94B7D8Ch
           			DWORD   0EC7AEC3Ah, 0DB851DFAh, 063094366h, 0C464C3D2h
           			DWORD   0EF1C1847h, 03215D908h, 0DD433B37h, 024C2BA16h
           			DWORD   012A14D43h, 02A65C451h, 050940002h, 0133AE4DDh
           			DWORD   071DFF89Eh, 010314E55h, 081AC77D6h, 05F11199Bh
           			DWORD   0043556F1h, 0D7A3C76Bh, 03C11183Bh, 05924A509h
           			DWORD   0F28FE6EDh, 097F1FBFAh, 09EBABF2Ch, 01E153C6Eh
           			DWORD   086E34570h, 0EAE96FB1h, 0860E5E0Ah, 05A3E2AB3h
           			DWORD   0771FE71Ch, 04E3D06FAh, 02965DCB9h, 099E71D0Fh
           			DWORD   0803E89D6h, 05266C825h, 02E4CC978h, 09C10B36Ah
           			DWORD   0C6150EBAh, 094E2EA78h, 0A5FC3C53h, 01E0A2DF4h
           			DWORD   0F2F74EA7h, 0361D2B3Dh, 01939260Fh, 019C27960h
           			DWORD   05223A708h, 0F71312B6h, 0EBADFE6Eh, 0EAC31F66h
           			DWORD   0E3BC4595h, 0A67BC883h, 0B17F37D1h, 0018CFF28h
           			DWORD   0C332DDEFh, 0BE6C5AA5h, 065582185h, 068AB9802h
           			DWORD   0EECEA50Fh, 0DB2F953Bh, 02AEF7DADh, 05B6E2F84h
           			DWORD   01521B628h, 029076170h, 0ECDD4775h, 0619F1510h
           			DWORD   013CCA830h, 0EB61BD96h, 00334FE1Eh, 0AA0363CFh
           			DWORD   0B5735C90h, 04C70A239h, 0D59E9E0Bh, 0CBAADE14h
           			DWORD   0EECC86BCh, 060622CA7h, 09CAB5CABh, 0B2F3846Eh
           			DWORD   0648B1EAFh, 019BDF0CAh, 0A02369B9h, 0655ABB50h
           			DWORD   040685A32h, 03C2AB4B3h, 0319EE9D5h, 0C021B8F7h
           			DWORD   09B540B19h, 0875FA099h, 095F7997Eh, 0623D7DA8h
           			DWORD   0F837889Ah, 097E32D77h, 011ED935Fh, 016681281h
           			DWORD   00E358829h, 0C7E61FD6h, 096DEDFA1h, 07858BA99h
           			DWORD   057F584A5h, 01B227263h, 09B83C3FFh, 01AC24696h
           			DWORD   0CDB30AEBh, 0532E3054h, 08FD948E4h, 06DBC3128h
           			DWORD   058EBF2EFh, 034C6FFEAh, 0FE28ED61h, 0EE7C3C73h
           			DWORD   05D4A14D9h, 0E864B7E3h, 042105D14h, 0203E13E0h
           			DWORD   045EEE2B6h, 0A3AAABEAh, 0DB6C4F15h, 0FACB4FD0h
           			DWORD   0C742F442h, 0EF6ABBB5h, 0654F3B1Dh, 041CD2105h
           			DWORD   0D81E799Eh, 086854DC7h, 0E44B476Ah, 03D816250h
           			DWORD   0CF62A1F2h, 05B8D2646h, 0FC8883A0h, 0C1C7B6A3h
           			DWORD   07F1524C3h, 069CB7492h, 047848A0Bh, 05692B285h
           			DWORD   0095BBF00h, 0AD19489Dh, 01462B174h, 023820E00h
           			DWORD   058428D2Ah, 00C55F5EAh, 01DADF43Eh, 0233F7061h
           			DWORD   03372F092h, 08D937E41h, 0D65FECF1h, 06C223BDBh
           			DWORD   07CDE3759h, 0CBEE7460h, 04085F2A7h, 0CE77326Eh
           			DWORD   0A6078084h, 019F8509Eh, 0E8EFD855h, 061D99735h
           			DWORD   0A969A7AAh, 0C50C06C2h, 05A04ABFCh, 0800BCADCh
           			DWORD   09E447A2Eh, 0C3453484h, 0FDD56705h, 00E1E9EC9h
           			DWORD   0DB73DBD3h, 0105588CDh, 0675FDA79h, 0E3674340h
           			DWORD   0C5C43465h, 0713E38D8h, 03D28F89Eh, 0F16DFF20h
           			DWORD   0153E21E7h, 08FB03D4Ah, 0E6E39F2Bh, 0DB83ADF7h
           			;Box 3
           			DWORD	0E93D5A68h, 0948140F7h, 0F64C261Ch, 094692934h
           			DWORD   0411520F7h, 07602D4F7h, 0BCF46B2Eh, 0D4A20068h
           			DWORD   0D4082471h, 03320F46Ah, 043B7D4B7h, 0500061AFh
           			DWORD   01E39F62Eh, 097244546h, 014214F74h, 0BF8B8840h
           			DWORD   04D95FC1Dh, 096B591AFh, 070F4DDD3h, 066A02F45h
           			DWORD   0BFBC09ECh, 003BD9785h, 07FAC6DD0h, 031CB8504h
           			DWORD   096EB27B3h, 055FD3941h, 0DA2547E6h, 0ABCA0A9Ah
           			DWORD   028507825h, 0530429F4h, 00A2C86DAh, 0E9B66DFBh
           			DWORD   068DC1462h, 0D7486900h, 0680EC0A4h, 027A18DEEh
           			DWORD   04F3FFEA2h, 0E887AD8Ch, 0B58CE006h, 07AF4D6B6h
           			DWORD   0AACE1E7Ch, 0D3375FECh, 0CE78A399h, 0406B2A42h
           			DWORD   020FE9E35h, 0D9F385B9h, 0EE39D7ABh, 03B124E8Bh
           			DWORD   01DC9FAF7h, 04B6D1856h, 026A36631h, 0EAE397B2h
           			DWORD   03A6EFA74h, 0DD5B4332h, 06841E7F7h, 0CA7820FBh
           			DWORD   0FB0AF54Eh, 0D8FEB397h, 0454056ACh, 0BA489527h
           			DWORD   055533A3Ah, 020838D87h, 0FE6BA9B7h, 0D096954Bh
           			DWORD   055A867BCh, 0A1159A58h, 0CCA92963h, 099E1DB33h
           			DWORD   0A62A4A56h, 03F3125F9h, 05EF47E1Ch, 09029317Ch
           			DWORD   0FDF8E802h, 004272F70h, 080BB155Ch, 005282CE3h
           			DWORD   095C11548h, 0E4C66D22h, 048C1133Fh, 0C70F86DCh
           			DWORD   007F9C9EEh, 041041F0Fh, 0404779A4h, 05D886E17h
           			DWORD   0325F51EBh, 0D59BC0D1h, 0F2BCC18Fh, 041113564h
           			DWORD   0257B7834h, 0602A9C60h, 0DFF8E8A3h, 01F636C1Bh
           			DWORD   00E12B4C2h, 002E1329Eh, 0AF664FD1h, 0CAD18115h
           			DWORD   06B2395E0h, 0333E92E1h, 03B240B62h, 0EEBEB922h
           			DWORD   085B2A20Eh, 0E6BA0D99h, 0DE720C8Ch, 02DA2F728h
           			DWORD   0D0127845h, 095B794FDh, 0647D0862h, 0E7CCF5F0h
           			DWORD   05449A36Fh, 0877D48FAh, 0C39DFD27h, 0F33E8D1Eh
           			DWORD   00A476341h, 0992EFF74h, 03A6F6EABh, 0F4F8FD37h
           			DWORD   0A812DC60h, 0A1EBDDF8h, 0991BE14Ch, 0DB6E6B0Dh
           			DWORD   0C67B5510h, 06D672C37h, 02765D43Bh, 0DCD0E804h
           			DWORD   0F1290DC7h, 0CC00FFA3h, 0B5390F92h, 0690FED0Bh
           			DWORD   0667B9FFBh, 0CEDB7D9Ch, 0A091CF0Bh, 0D9155EA3h
           			DWORD   0BB132F88h, 0515BAD24h, 07B9479BFh, 0763BD6EBh
           			DWORD   037392EB3h, 0CC115979h, 08026E297h, 0F42E312Dh
           			DWORD   06842ADA7h, 0C66A2B3Bh, 012754CCCh, 0782EF11Ch
           			DWORD   06A124237h, 0B79251E7h, 006A1BBE6h, 04BFB6350h
           			DWORD   01A6B1018h, 011CAEDFAh, 03D25BDD8h, 0E2E1C3C9h
           			DWORD   044421659h, 00A121386h, 0D90CEC6Eh, 0D5ABEA2Ah
           			DWORD   064AF674Eh, 0DA86A85Fh, 0BEBFE988h, 064E4C3FEh
           			DWORD   09DBC8057h, 0F0F7C086h, 060787BF8h, 06003604Dh
           			DWORD   0D1FD8346h, 0F6381FB0h, 07745AE04h, 0D736FCCCh
           			DWORD   083426B33h, 0F01EAB71h, 0B0804187h, 03C005E5Fh
           			DWORD   077A057BEh, 0BDE8AE24h, 055464299h, 0BF582E61h
           			DWORD   04E58F48Fh, 0F2DDFDA2h, 0F474EF38h, 08789BDC2h
           			DWORD   05366F9C3h, 0C8B38E74h, 0B475F255h, 046FCD9B9h
           			DWORD   07AEB2661h, 08B1DDF84h, 0846A0E79h, 0915F95E2h
           			DWORD   0466E598Eh, 020B45770h, 08CD55591h, 0C902DE4Ch
           			DWORD   0B90BACE1h, 0BB8205D0h, 011A86248h, 07574A99Eh
           			DWORD   0B77F19B6h, 0E0A9DC09h, 0662D09A1h, 0C4324633h
           			DWORD   0E85A1F02h, 009F0BE8Ch, 04A99A025h, 01D6EFE10h
           			DWORD   01AB93D1Dh, 00BA5A4DFh, 0A186F20Fh, 02868F169h
           			DWORD   0DCB7DA83h, 0573906FEh, 0A1E2CE9Bh, 04FCD7F52h
           			DWORD   050115E01h, 0A70683FAh, 0A002B5C4h, 00DE6D027h
           			DWORD   09AF88C27h, 0773F8641h, 0C3604C06h, 061A806B5h
           			DWORD   0F0177A28h, 0C0F586E0h, 0006058AAh, 030DC7D62h
           			DWORD   011E69ED7h, 02338EA63h, 053C2DD94h, 0C2C21634h
           			DWORD   0BBCBEE56h, 090BCB6DEh, 0EBFC7DA1h, 0CE591D76h
           			DWORD   06F05E409h, 04B7C0188h, 039720A3Dh, 07C927C24h
           			DWORD   086E3725Fh, 0724D9DB9h, 01AC15BB4h, 0D39EB8FCh
           			DWORD   0ED545578h, 008FCA5B5h, 0D83D7CD3h, 04DAD0FC4h
           			DWORD   01E50EF5Eh, 0B161E6F8h, 0A28514D9h, 06C51133Ch
           			DWORD   06FD5C7E7h, 056E14EC4h, 0362ABFCEh, 0DDC6C837h
           			DWORD   0D79A3234h, 092638212h, 0670EFA8Eh, 0406000E0h
           			;Box 4
           			DWORD	03A39CE37h, 0D3FAF5CFh, 0ABC27737h, 05AC52D1Bh
           			DWORD   05CB0679Eh, 04FA33742h, 0D3822740h, 099BC9BBEh
           			DWORD   0D5118E9Dh, 0BF0F7315h, 0D62D1C7Eh, 0C700C47Bh
           			DWORD   0B78C1B6Bh, 021A19045h, 0B26EB1BEh, 06A366EB4h
           			DWORD   05748AB2Fh, 0BC946E79h, 0C6A376D2h, 06549C2C8h
           			DWORD   0530FF8EEh, 0468DDE7Dh, 0D5730A1Dh, 04CD04DC6h
           			DWORD   02939BBDBh, 0A9BA4650h, 0AC9526E8h, 0BE5EE304h
           			DWORD   0A1FAD5F0h, 06A2D519Ah, 063EF8CE2h, 09A86EE22h
           			DWORD   0C089C2B8h, 043242EF6h, 0A51E03AAh, 09CF2D0A4h
           			DWORD   083C061BAh, 09BE96A4Dh, 08FE51550h, 0BA645BD6h
           			DWORD   02826A2F9h, 0A73A3AE1h, 04BA99586h, 0EF5562E9h
           			DWORD   0C72FEFD3h, 0F752F7DAh, 03F046F69h, 077FA0A59h
           			DWORD   080E4A915h, 087B08601h, 09B09E6ADh, 03B3EE593h
           			DWORD   0E990FD5Ah, 09E34D797h, 02CF0B7D9h, 0022B8B51h
           			DWORD   096D5AC3Ah, 0017DA67Dh, 0D1CF3ED6h, 07C7D2D28h
           			DWORD   01F9F25CFh, 0ADF2B89Bh, 05AD6B472h, 05A88F54Ch
           			DWORD   0E029AC71h, 0E019A5E6h, 047B0ACFDh, 0ED93FA9Bh
           			DWORD   0E8D3C48Dh, 0283B57CCh, 0F8D56629h, 079132E28h
           			DWORD   0785F0191h, 0ED756055h, 0F7960E44h, 0E3D35E8Ch
           			DWORD   015056DD4h, 088F46DBAh, 003A16125h, 00564F0BDh
           			DWORD   0C3EB9E15h, 03C9057A2h, 097271AECh, 0A93A072Ah
           			DWORD   01B3F6D9Bh, 01E6321F5h, 0F59C66FBh, 026DCF319h
           			DWORD   07533D928h, 0B155FDF5h, 003563482h, 08ABA3CBBh
           			DWORD   028517711h, 0C20AD9F8h, 0ABCC5167h, 0CCAD925Fh
           			DWORD   04DE81751h, 03830DC8Eh, 0379D5862h, 09320F991h
           			DWORD   0EA7A90C2h, 0FB3E7BCEh, 05121CE64h, 0774FBE32h
           			DWORD   0A8B6E37Eh, 0C3293D46h, 048DE5369h, 06413E680h
           			DWORD   0A2AE0810h, 0DD6DB224h, 069852DFDh, 009072166h
           			DWORD   0B39A460Ah, 06445C0DDh, 0586CDECFh, 01C20C8AEh
           			DWORD   05BBEF7DDh, 01B588D40h, 0CCD2017Fh, 06BB4E3BBh
           			DWORD   0DDA26A7Eh, 03A59FF45h, 03E350A44h, 0BCB4CDD5h
           			DWORD   072EACEA8h, 0FA6484BBh, 08D6612AEh, 0BF3C6F47h
           			DWORD   0D29BE463h, 0542F5D9Eh, 0AEC2771Bh, 0F64E6370h
           			DWORD   0740E0D8Dh, 0E75B1357h, 0F8721671h, 0AF537D5Dh
           			DWORD   04040CB08h, 04EB4E2CCh, 034D2466Ah, 00115AF84h
           			DWORD   0E1B00428h, 095983A1Dh, 006B89FB4h, 0CE6EA048h
           			DWORD   06F3F3B82h, 03520AB82h, 0011A1D4Bh, 0277227F8h
           			DWORD   0611560B1h, 0E7933FDCh, 0BB3A792Bh, 0344525BDh
           			DWORD   0A08839E1h, 051CE794Bh, 02F32C9B7h, 0A01FBAC9h
           			DWORD   0E01CC87Eh, 0BCC7D1F6h, 0CF0111C3h, 0A1E8AAC7h
           			DWORD   01A908749h, 0D44FBD9Ah, 0D0DADECBh, 0D50ADA38h
           			DWORD   00339C32Ah, 0C6913667h, 08DF9317Ch, 0E0B12B4Fh
           			DWORD   0F79E59B7h, 043F5BB3Ah, 0F2D519FFh, 027D9459Ch
           			DWORD   0BF97222Ch, 015E6FC2Ah, 00F91FC71h, 09B941525h
           			DWORD   0FAE59361h, 0CEB69CEBh, 0C2A86459h, 012BAA8D1h
           			DWORD   0B6C1075Eh, 0E3056A0Ch, 010D25065h, 0CB03A442h
           			DWORD   0E0EC6E0Eh, 01698DB3Bh, 04C98A0BEh, 03278E964h
           			DWORD   09F1F9532h, 0E0D392DFh, 0D3A0342Bh, 08971F21Eh
           			DWORD   01B0A7441h, 04BA3348Ch, 0C5BE7120h, 0C37632D8h
           			DWORD   0DF359F8Dh, 09B992F2Eh, 0E60B6F47h, 00FE3F11Dh
           			DWORD   0E54CDA54h, 01EDAD891h, 0CE6279CFh, 0CD3E7E6Fh
           			DWORD   01618B166h, 0FD2C1D05h, 0848FD2C5h, 0F6FB2299h
           			DWORD   0F523F357h, 0A6327623h, 093A83531h, 056CCCD02h
           			DWORD   0ACF08162h, 05A75EBB5h, 06E163697h, 088D273CCh
           			DWORD   0DE966292h, 081B949D0h, 04C50901Bh, 071C65614h
           			DWORD   0E6C6C7BDh, 0327A140Ah, 045E1D006h, 0C3F27B9Ah
           			DWORD   0C9AA53FDh, 062A80F00h, 0BB25BFE2h, 035BDD2F6h
           			DWORD   071126905h, 0B2040222h, 0B6CBCF7Ch, 0CD769C2Bh
           			DWORD   053113EC0h, 01640E3D3h, 038ABBD60h, 02547ADF0h
           			DWORD   0BA38209Ch, 0F746CE76h, 077AFA1C5h, 020756060h
           			DWORD   085CBFE4Eh, 08AE88DD8h, 07AAAF9B0h, 04CF9AA7Eh
           			DWORD   01948C25Ch, 002FB8A8Ch, 001C36AE4h, 0D6EBE1F9h
           			DWORD   090D4F869h, 0A65CDEA0h, 03F09252Dh, 0C208E69Fh
           			DWORD   0B74E6132h, 0CE77E25Bh, 0578FDFE3h, 03AC372E6h


m2m			macro x, y
	push y
	pop x
endm


.data
BLOWFISH_P_E		DWORD	18			dup(0)
BLOWFISH_S_E		DWORD	1024		dup(0)

.code

BLOWFISH_Init		proc	Key:DWORD, Len:DWORD
	LOCAL i:DWORD, j:DWORD, k:DWORD
	LOCAL data:DWORD, data_l:DWORD, data_r:DWORD

	mov i, 0
	@CPY_LOOP1:
		pushad
		mov j, 0
		@CPY_LOOP2:
			pushad
			mov ecx, i
			imul ecx, 256
			add ecx, j
			mov edx, dword ptr ds:[BLOWFISH_S_C+4*ecx]
			mov dword ptr ds:[BLOWFISH_S_E+4*ecx], edx
			popad
			inc j
			cmp j, 256
			jl @CPY_LOOP2
		popad
		inc i
		cmp i, 4
		jl @CPY_LOOP1
		
	mov j, 0
	mov i, 0
	@FL_1:
		pushad
		mov data, 0
		mov k, 0
		@FL_2:
			pushad
			mov ebx, data
			shl ebx, 8
			mov ecx, j
			mov esi, dword ptr ds:[Key]
			movzx edx, byte ptr ds:[esi+1*ecx]
			or ebx, edx
			mov data, ebx
			inc j
			mov ecx, Len
			cmp j, ecx
			jl @DONT_ZERO
			mov j, 0
			@DONT_ZERO:
			popad
			inc k
			cmp k, 4
			jl @FL_2
		mov ecx, i
		mov edx, data
		mov ebx, dword ptr ds:[BLOWFISH_P_C+4*ecx]
		xor ebx, edx
		mov dword ptr ds:[BLOWFISH_P_E+4*ecx], ebx
		popad
		inc i
		mov ecx, BLOWFISH_N
		add ecx, 2
		cmp i, ecx
		jl @FL_1
		
	mov data_l, 0
	mov data_r, 0
	
	mov i, 0
	@FL_3:
		pushad
		invoke BLOWFISH_Encrypt, addr data_l, addr data_r
		mov ebx, data_l
		mov ecx, i
		mov dword ptr ds:[BLOWFISH_P_E+4*ecx], ebx
		inc ecx
		mov ebx, data_r
		mov dword ptr ds:[BLOWFISH_P_E+4*ecx], ebx
		popad
		add i, 2
		mov ecx, BLOWFISH_N
		add ecx, 2
		cmp i, ecx
		jl @FL_3
		
	mov i, 0
	mov j, 0
	@FL_4:
		pushad
		mov j, 0
		@FL_5:
			pushad
			invoke BLOWFISH_Encrypt, addr data_l, addr data_r
			mov ebx, data_l
			mov ecx, i
			imul ecx, 256
			add ecx, j
			mov dword ptr ds:[BLOWFISH_S_E+4*ecx], ebx
			mov ebx, data_r
			inc ecx
			mov dword ptr ds:[BLOWFISH_S_E+4*ecx], ebx
			popad
			add j, 2
			cmp j, 256
			jl @FL_5
		popad
		inc i
		cmp i, 4
		jl @FL_4
	ret

BLOWFISH_Init endp

BLOWFISH_F			proc	x:DWORD
	LOCAL _a:DWORD, _b:DWORD, _c:DWORD, _d:DWORD
	LOCAL _y:DWORD
	
	pushad
	m2m _d, x
	and _d, 0FFh
	shr x, 8
	m2m _c, x
	and _c, 0FFh
	shr x, 8
	m2m _b, x
	and _b, 0FFh
	shr x, 8
	m2m _a, x
	and _a, 0FFh
	mov ecx, 0
	add ecx, _a
	mov edx, dword ptr ds:[BLOWFISH_S_E+4*ecx]
	mov ecx, 256
	add ecx, _b
	add edx, dword ptr ds:[BLOWFISH_S_E+4*ecx]
	mov _y, edx
	mov ecx, 512
	add ecx, _c
	mov edx, dword ptr ds:[BLOWFISH_S_E+4*ecx]
	xor _y, edx
	mov ecx, 768
	add ecx, _d
	mov edx, dword ptr ds:[BLOWFISH_S_E+4*ecx]
	add _y, edx
	popad
	mov eax, _y
	
	
	ret
	
BLOWFISH_F endp

BLOWFISH_Encrypt	proc	xl:DWORD, xr:DWORD
	LOCAL x_r:DWORD, x_l:DWORD, i:DWORD
	pushad
	mov ebx, xl
	m2m x_l, dword ptr ds:[ebx]
	mov ebx, xr
	m2m x_r, dword ptr ds:[ebx]
	mov i, 0
	@FL_1:
		pushad
		mov ecx, i
		mov ebx, dword ptr ds:[BLOWFISH_P_E+4*ecx]
		xor x_l, ebx
		invoke BLOWFISH_F, x_l
		xor eax, x_r
		mov x_r, eax
		mov eax, x_l
		m2m x_l, x_r
		mov x_r, eax
		popad
		inc i
		mov ecx, BLOWFISH_N
		cmp i, ecx
		jl @FL_1
	mov eax, x_l
	m2m x_l, x_r
	mov x_r, eax
	mov ecx, BLOWFISH_N
	mov ebx, dword ptr ds:[BLOWFISH_P_E+4*ecx]
	xor x_r, ebx
	inc ecx
	mov ebx, dword ptr ds:[BLOWFISH_P_E+4*ecx]
	xor x_l, ebx
	mov ebx, xl
	m2m dword ptr ds:[ebx], x_l
	mov ebx, xr
	m2m dword ptr ds:[ebx], x_r
	popad
	ret

BLOWFISH_Encrypt endp

BLOWFISH_Decrypt	proc	xl:DWORD, xr:DWORD
	LOCAL x_r:DWORD, x_l:DWORD, i:DWORD
	pushad
	mov ebx, xl
	m2m x_l, dword ptr ds:[ebx]
	mov ebx, xr
	m2m x_r, dword ptr ds:[ebx]
	m2m i, BLOWFISH_N
	inc i
	@FL_1:
		pushad
		mov ecx, i
		mov ebx, dword ptr ds:[BLOWFISH_P_E+4*ecx]
		xor x_l, ebx
		invoke BLOWFISH_F, x_l
		xor eax, x_r
		mov x_r, eax
		mov eax, x_l
		m2m x_l, x_r
		mov x_r, eax
		popad
		dec i
		cmp i, 1
		jg @FL_1
	popad
	mov eax, x_l
	m2m x_l, x_r
	mov x_r, eax
	mov ebx, dword ptr ds:[BLOWFISH_P_E+4]
	xor x_r, ebx
	mov ebx, dword ptr ds:[BLOWFISH_P_E]
	xor x_l, ebx	
	mov ebx, xl
	m2m dword ptr ds:[ebx], x_l
	mov ebx, xr
	m2m dword ptr ds:[ebx], x_r
	ret

BLOWFISH_Decrypt endp

endif
Und ein Beispiel dazu:
Code:
.386
.model flat, stdcall
option casemap:none

include windows.inc
include kernel32.inc
include user32.inc
include msvcrt.inc
include masm32.inc

includelib kernel32.lib
includelib user32.lib
includelib msvcrt.lib
includelib masm32.lib

include Blowfish.asm

.const
_str			macro x:VARARG
	LOCAL txt
	.data
		txt db x,0
		align 4
	.code
	exitm <addr txt>
endm

_strfm			macro dat:REQ, dat2:VARARG
	LOCAL txt
	.data?
		txt db 400 dup(?)
		align 4
	.code
	pushad
	invoke wsprintf, addr txt, _str(dat), dat2
	popad
	exitm<addr txt>
endm


.data
Buffer			db		256 dup(0)

_L			DWORD	1
_R			DWORD	2	
_KEY			db		'TESTKEY',0
_LEN			DWORD	7


.code
start:
	invoke BLOWFISH_Init, addr _KEY, _LEN
	invoke StdOut, _strfm('L: %X R: %X -> ', _L, _R)
	invoke BLOWFISH_Encrypt, addr _L, addr _R
	invoke StdOut, _strfm('L: %X R: %X -> ', _L, _R)
	invoke BLOWFISH_Decrypt, addr _L, addr _R
	invoke StdOut, _strfm('L: %X R: %X', _L, _R)
	invoke StdIn, addr Buffer, 256

	
	invoke ExitProcess, 0

end start
vielleicht kann es ja wer gebrauchen ( bin momentan sowieso dabei ein paar Algorithmen in MASM zu schreiben ).

Attached Files
File Type: txt blowfish.txt (22.1 KB, 6 views)
​Tension is offline  
Thanks
6 Users
Reply


Similar Threads Similar Threads
[MASM] - Mini I/O
02/21/2014 - Coding Snippets - 0 Replies
Hello again, this is my mini I/O MASM 'Class'. It has the basic functions, if you think i should change/add something please tell me what :) (I really enjoy creating such files because they make everything easier) Source: io_file.asm:
[MASM] - Small Vector 'Class'
01/30/2014 - Coding Snippets - 0 Replies
Hey, ich brauchte eine Art Vector-Class in MASM für das Handling von Struct-Arrays usw. ( allgemein ist es dann handlicher meiner Meinung nach ), also hab ich mich entschlossen eine Klasse zu schreiben bzw. eine ASM-Datei. hier ist erstmal der code von Vector.asm: ;===================================; ;= Vector Class =; ;= Author: Ten$ion =; ;= Date: 01/30/2014 =; ;= Language: MASM =;
[MASM] - MD5
12/29/2013 - Coding Snippets - 2 Replies
Hi, Da ich eine MD5 - Funktion in MASM brauche die nicht alt zu groß ist, hab ich beschlossen sie selbst zu Implementieren ( Quelle ist im Source angegeben ). Ich habe ein Beispiel mit in den Anhang gepackt ( Passwort: epvp_tension ). Code: ;====================================; ;= Message Digest Algorithm =; ;= MASM implementation =; ;= by Ten$ion =;
NASM, FASM & MASM
11/12/2011 - CO2 Programming - 11 Replies
Alright, which one would be best to learn? Atm. I have been learning NASM, but I don't know if it's any better or worse than FASM or MASM. I have heard from some assembly programmers that I should just not use MASM. Opinions?
Call COs jump function in masm?
10/28/2006 - Conquer Online 2 - 0 Replies
well i followed the tutorial on how to do this but it didnt give a very good masm example. how would i call the function in masm? does anyone have a good example or code? i have a bunch of other functions to use for hacks but i need to get this done first. im new to masm so i dont really know wat to do. i know how to call functions that dont have variables in other games but no clue when it comes to variables (x and y for jumping.) thanks, high6. p.s. here is the jump function location...



All times are GMT +1. The time now is 08:08.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.