here is the Blowfish code in C# , you would need "libeay32.dll"
Code:
public class Blowfish { private static readonly uint[] P = { 0x5EF6F472, 0x7D8186FD, 0x89922CDA, 0x29481716, 0x23C5A876, 0xD823BFAA, 0x40F87500, 0xECAA03CC, 0x97A3F6C8, 0xB2DA9755, 0x8DE04365, 0x33F5405B, 0xDFF19A4A, 0xAAD3F9A, 0xE2AE1496, 0xA81AA449, 0xB8FB4F9, 0x67223FE9 }; private static readonly uint[] S = { 0xE0D175FB, 0x789AB73, 0xAFC4CBBE, 0x13789FDD, 0x93E9208D, 0xB1AD20FD, 0x2E64F35, 0xDC3C2746, 0x6B9280AF, 0x517B59F, 0xA5BAD018, 0x3285C89F, 0x31FB6E78, 0x4E24048B, 0xF91EE261, 0x65BD94A2, 0x839881C9, 0xEDCF6CE, 0x3792A1E6, 0x2E88A137, 0x7017A49, 0x3EB722A, 0x1ADF3F6A, 0xB97CA59A, 0x4402DBFA, 0x601B0D0D, 0xDCE7F864, 0x52DD5DA, 0x48A4EC9A, 0xEBE833DF, 0x12245D18, 0x69E4FF1B, 0xD47F586F, 0x7E1D4492, 0xEEFDBF37, 0x40234575, 0x6D07AB47, 0x7B520798, 0xB86C9DDC, 0x641DB8AE, 0x82E0951B, 0xEFF47DFF, 0x925A332B, 0x3E018DD1, 0xDD549D4F, 0x75B9E1D8, 0xC662C4C5, 0x5981D95E, 0x5F9AD55D, 0xB0E7B199, 0xB4F5E70B, 0x3F63B3AF, 0x965D21F8, 0x3D55AD29, 0xE418A1C2, 0xB7A4F0CB, 0x3C98F7B3, 0x8D45CDE8, 0xE94A59A6, 0xE73D16AC, 0xA2A105D5, 0xC50DE6E0, 0xE780DF41, 0x89BDF8A8, 0x6088FAB5, 0x97202D21, 0x22F2B364, 0xE04A1BDE, 0x56AEB05D, 0xEBD3586E, 0x6005E55A, 0xF66D266E, 0xD10ADFDF, 0xCE34978C, 0x78038521, 0x8169CFA4, 0x6476CF56, 0xD1F81B1E, 0x1A2B5FC4, 0xE206DF10, 0xA1C8E69B, 0xBBB3EDE6, 0xEC913F5F, 0xD3D73275, 0xC204AEC2, 0xD1A850DD, 0x1260512E, 0xA3B548EF, 0x238B4D54, 0xB0977C87, 0x99BA45E7, 0xCC4E1580, 0xB67B3B75, 0x6808A702, 0xB1B658A6, 0xA48362C6, 0x497CEFAC, 0x54E91831, 0xF85B0B37, 0x64A775C2, 0x8E05A3E2, 0xEF9A492E, 0xE9B01F6C, 0xF9373C33, 0xDDCF4EB7, 0x10390D48, 0x7D6AE852, 0x467F4076, 0xB8D043D3, 0xAA01D541, 0x18FF9056, 0x322AA387, 0xB3EEED96, 0x9005595, 0x3BF14E47, 0x918E7FC9, 0x60EC1642, 0x82A101D1, 0xC4FA79A1, 0xF73C1A5F, 0xD267F7C1, 0x42ECB6B, 0x1DA71072, 0xD21E8A32, 0xC22BC2DD, 0x333450B, 0x89F030E, 0xD682B65F, 0x552325C7, 0xE8994735, 0x6F5B5751, 0x54CA7424, 0xDE029CD2, 0x4B0CA7B, 0x14284B18, 0xA8FEAFA, 0x8AA1E6D7, 0x56535CA6, 0x4FE8F8AF, 0x2783AD92, 0xFC121BCA, 0x7BC46BA0, 0xC2869389, 0x266EACBD, 0x51607F2A, 0xFF884589, 0xEEA4BFED, 0x12C6E81C, 0x3998552A, 0x3B24CF1F, 0xF4C8F90E, 0x3DC4CB38, 0xBA6C910C, 0x4148B14C, 0x3FD75CDC, 0xD732F860, 0x20963F34, 0xE5275297, 0xAB4458A7, 0x1316EE82, 0xA43488A1, 0xD4DC2D57, 0xFD052D02, 0x68D67004, 0x549C0249, 0x5D6065D5, 0xFBE8F457, 0x7EB183F3, 0x2E32FCF8, 0xBE229B2C, 0x932652AD, 0x863A17D8, 0xE1F9DE29, 0x5E1935C5, 0xCAAFAF63, 0x5B332A78, 0x51DEEBD7, 0x8618879A, 0x934F6F9B, 0xCF2BB32, 0x230C5AF9, 0x17E63868, 0xCEBC6624, 0x6F71EA5B, 0x43A77979, 0x4BEE750B, 0xE36749E5, 0xDAFE0E63, 0x3F0E2518, 0x7767F41C, 0x9BA83DB8, 0xE67B1B99, 0x495D156D, 0xCF9FA047, 0x3695713D, 0x305813C6, 0x21619A98, 0x14F038B3, 0x97E338B1, 0x594AAFAA, 0xE3B44754, 0xEA08B14, 0x3466D71C, 0x99FFBE27, 0x9171AF43, 0x3F832F59, 0x238ABA88, 0x83B01761, 0xDCFFE2E, 0xA98FFAFB, 0x9DF1A476, 0xEDE15B73, 0x41A05182, 0xCE0E43CF, 0x5F9FADD3, 0xB2E2FFEB, 0x305E703C, 0xB28F1383, 0xE42D863C, 0x51381855, 0xB44E1127, 0xAAD2060C, 0xE73E0BC3, 0xE1BB5643, 0xB30BC2F0, 0xAC76F7A6, 0x5B77EF6, 0x6B5AC3F3, 0x302048A5, 0xEFD07CD5, 0x3B4C8996, 0x42030714, 0x1D9B80C5, 0xD3C6F1C1, 0x174BE424, 0xDAA49625, 0x98FE7144, 0x83BF7CCC, 0x8DC2CEC7, 0x49045204, 0x8D2E63A1, 0x6CECF83C, 0xC49C19DF, 0x697D996A, 0xBDBA5B45, 0x819545A, 0x113D44D0, 0x499627B4, 0xD3A0EAE6, 0xC18B09A8, 0xF1EE887C, 0x8424BAC9, 0x9B4EAEC8, 0xE3E2EE8B, 0x51D74B65, 0x2B55AEF7, 0x6B5149CA, 0x32E60A49, 0xA6623B2, 0x763988FD, 0x8CDDEA6C, 0xA4558D16, 0x3AC7023, 0x666C5761, 0xF5E3E504, 0x4A71E1AA, 0x643ADC1B, 0x51632903, 0xD686A9D6, 0xE5B0E66F, 0xB1914BC7, 0xB3B01423, 0xFD13AA13, 0x41AB6C85, 0xA68E6B98, 0x49CEE2D7, 0xC8E43039, 0xEB4035B3, 0x3BDB26F, 0xC81E60A9, 0x8DE8C76A, 0xEAD64D7F, 0xF3207190, 0xD7CD9D50, 0x6C6F2C8D, 0x9B5D77CE, 0xDAEACB95, 0xB251EB51, 0xE9A99D2F, 0x93098628, 0x366B584C, 0xDC36BC29, 0x6F4649FB, 0xA3ECCF2D, 0x689ECEC1, 0xC1A62D6B, 0x8A78E56, 0x4864935B, 0xE4F81AE4, 0x876A16D7, 0x26CB9B17, 0x5908293, 0xA7FDAE3E, 0xB662D7D1, 0x66AC90C5, 0x90F3A39, 0x57D30B47, 0x5463F909, 0x86764764, 0x17905982, 0x37C42D37, 0xA022A56F, 0xE74E38C5, 0xEFC9396D, 0xC92C204C, 0xBBA6E724, 0x60E14B43, 0xBF33305E, 0xCFF44C6, 0xF06C0AA4, 0xEFF3120, 0x3F91A5A1, 0xDFD87BB9, 0x50BA4DC3, 0x1558A915, 0xC337F225, 0xA286799E, 0xB1A6AE6D, 0xD8947A27, 0x57F69B7F, 0x7F4C53B9, 0xE2D87B4D, 0x51F0B366, 0x403EC488, 0xE8D5B1AB, 0x69EFFB1F, 0x333C08AF, 0x87A152C9, 0x5CBF12AB, 0xD2D6DB5D, 0x5DA49B13, 0xB1F029EB, 0x40381794, 0xB0CDC291, 0x18237D53, 0xC082FE3, 0xAC73EF8D, 0x5CEFC7, 0x9EBDDA70, 0x2D720177, 0x121C17F4, 0x229D0C2B, 0x6F8BECD0, 0x687783F4, 0x68F928A2, 0x651FAEE9, 0x3F09D2FB, 0xDD581480, 0xEF93E573, 0x7A02BE13, 0xC608B0EC, 0x35AF1082, 0xF8F52D9C, 0xD3419C4, 0x9F61FCF0, 0x91756376, 0x615EA992, 0x97C3E755, 0x99694A90, 0x3A95D365, 0xEB41C4CD, 0x10BB8DAB, 0xCC5CE3BE, 0xF1C24FB4, 0xC2EF4C0C, 0x63AC4249, 0xE6E10CB4, 0x14AB849F, 0xED5680B5, 0xD396005D, 0x9BB94081, 0x44E7E856, 0x6CB39347, 0x2E7F52B0, 0xD8114959, 0x9F2FB8D4, 0x39F8FB0F, 0x884AE75A, 0xDADF8004, 0xB67DC679, 0xFAAF932C, 0x796348F8, 0xB748003E, 0xFFB2E79D, 0x3A41D1A7, 0x33518F88, 0xB0616A27, 0x97F93F87, 0x2CC1DC4F, 0x73D6BEF3, 0x60EB425B, 0x9D1C4C38, 0x2982E500, 0xC5856E3, 0x20FD5FB2, 0xF8700521, 0x621AF931, 0xABB356BC, 0x4376369D, 0xAAD6CC87, 0x481C3F57, 0xB6C66EE7, 0x96C42B7E, 0x3701145A, 0xF258E1A9, 0x21B6763, 0xC54A216C, 0xF2ECA18, 0x4A7956B6, 0xF74AC916, 0x7D27E61, 0x88F8D6AE, 0x7A73ABD8, 0xFAD862F3, 0xF9FFDD46, 0x5A039568, 0x98433DE0, 0x64BF9397, 0x27E091F2, 0xD31EA89D, 0xB52D9F9F, 0x8F4C2BF9, 0xBB2E5E0F, 0xB776CDF2, 0x62B6185F, 0xABE0369E, 0xB43578E2, 0x62A5E384, 0x39D9BA7D, 0xEB5EEEFB, 0xF65C362, 0xABBDEEB8, 0xF97F68A3, 0x932D62E4, 0x582FFD86, 0x50B3FD71, 0x6FE23A38, 0x39855FD8, 0x7BE6B2DE, 0x32DD7117, 0x4F24082A, 0xA700B254, 0xA9A00FA5, 0xA43DB7CD, 0x1383649D, 0xCC5BB6A1, 0x189538A1, 0x6DCC270F, 0x4DA9DA88, 0xEA581C37, 0xB0956D65, 0x927BDDA7, 0xB3819934, 0xD700C86F, 0xB2580FF7, 0x19557776, 0xE4118E94, 0x3DE5198D, 0xBB847FD0, 0x2031184A, 0x22DCD114, 0x2D8A87E6, 0xAB145714, 0xFE8C252, 0xC8F4E731, 0xDF244507, 0xC212E187, 0x3D828C27, 0xB3CE2072, 0xD3BEE488, 0xCEF9E663, 0x28EDEAC9, 0x2D4DA731, 0x14FF05CD, 0xE6CEE893, 0x9EA47B86, 0x513F4C17, 0x1A731F9F, 0xEC84CBDA, 0xC751251, 0x15117369, 0x121F1700, 0x9E1ACA94, 0xD3AA73C6, 0xE96368E4, 0x74F95760, 0x8A305C9E, 0xB71BDAED, 0x35FD5096, 0xAA5A1E1, 0x3E936D14, 0x99D64DA4, 0x283BF90D, 0x8AC67C0F, 0x818E1E8C, 0x4EC4257C, 0x229C3D21, 0xB431E2BB, 0xAE43527A, 0x34301B28, 0xC9009C22, 0xEB782E30, 0x9134FF5, 0x50276F0B, 0x36CF2A8B, 0x58DBC68C, 0xF69902F6, 0xB4F9D3DF, 0xFD23C32B, 0x48DC9D2, 0x1145155B, 0xF2517729, 0x35E4C78F, 0x26C74AF4, 0x69699E3C, 0x90C2F15B, 0xA70CF3FF, 0x52BE5D74, 0xCECA05AE, 0x95700AF5, 0x8E967C8A, 0x263A3E53, 0x1B63C16D, 0xEC36B6AA, 0x3820915B, 0x48E1C1D3, 0xE4851538, 0x31777DBD, 0x701342E6, 0xDF33BB1B, 0xD7E0DAB, 0x1EF3CC95, 0xB70C5D94, 0xDEA2E87E, 0x4C303B16, 0xF22828A0, 0x1CFE2BFE, 0x3B4D23BA, 0x8DC4696E, 0x287DEC8D, 0xF0B7801C, 0x629E92D1, 0x3BBCDA2F, 0xEC680DA5, 0x2E366790, 0xB72D1435, 0x344C3F08, 0x71C66700, 0xE7CCCB91, 0x86ABF766, 0x8DF5D825, 0xFBD93B09, 0x3AFA8A6A, 0x600D12DC, 0x7D887D7F, 0x131FB8C2, 0x62EE6862, 0xE3537A30, 0xCA4A52CA, 0xA68A9357, 0xED3342DB, 0xE23B1AB8, 0x597332F7, 0x12728848, 0x3E987ABF, 0x3A196847, 0x919FB40B, 0x7B72EBBA, 0x743E1127, 0xF5723DEF, 0x7D59454A, 0xBFC20534, 0x1E058774, 0x1017F437, 0x169C6413, 0x55CC50EA, 0xE0761E76, 0x9F897B76, 0x3F92445D, 0x47720EA0, 0x1B51CDFA, 0x310830B4, 0x7B345613, 0x8605F6A7, 0xD8F4DAAC, 0xA5FB5DD9, 0xC4C96F3F, 0x336EF5C3, 0xA3D32F6F, 0xE645C4, 0xE35766CC, 0x713062B9, 0x8F59B1F3, 0x84BE8F8C, 0x4E28D0A, 0x6E2AEA06, 0x16FDE8E2, 0x4CCC2CE2, 0xCACB949F, 0x490625B2, 0x3B48E30A, 0xE0C9AE01, 0xAE648FE1, 0x12A7CB8D, 0x8837D983, 0x32A97A07, 0xBB44233, 0x4BC77705, 0x9F47674B, 0xEB3C5397, 0x2A01BB23, 0xC55F7B35, 0xD32D9C6F, 0xF638AA57, 0xD8AEA04D, 0xC06EF9D5, 0x5987AAD9, 0x7A927DE3, 0x8BD3974C, 0xE95FEE85, 0x46AC4504, 0xEFA83683, 0x64EC45F8, 0xAB895329, 0x84B7A83A, 0xF54911AD, 0x9681545E, 0x92610ECA, 0x870A0E3A, 0x7587F146, 0x6AE1FEEF, 0xA8725AAB, 0x85BA3A25, 0x3B0AD6BE, 0x298ED295, 0x5C7CABDA, 0x6CED2A53, 0x6E077593, 0x519B963A, 0x642C0858, 0x8AC5429F, 0xE205579E, 0xC1868172, 0x3492E696, 0x64451675, 0xDE8FB81, 0xA66DC2F6, 0xEDC93126, 0x93627D24, 0x195BE68F, 0xD239216B, 0x9DEB7CFC, 0x671A99D, 0xACEE7F30, 0xA6EBB029, 0x957232F4, 0x7455BC99, 0x22CC4C34, 0x8472A35F, 0x4D3710F1, 0x31C33236, 0xE696FC74, 0x38107355, 0xB2C6CCBA, 0x155998C1, 0x8936C0D6, 0xE7BEC16A, 0xF56AECB0, 0xCD26A197, 0x52A1C8DA, 0x23043B0E, 0x1078CEAE, 0xA8B41143, 0xFA238113, 0xDDB47774, 0x8DF14934, 0x9B52CCE8, 0x7E865E13, 0x5B8BB77C, 0x5FBE6DA3, 0xF59B5C96, 0xBD4F2E4F, 0x672EE4E7, 0xDB5698A9, 0x554ABCC8, 0xCAE38D36, 0xCDDF14CE, 0x3583D9DE, 0xF298A0FB, 0x6E62F5A, 0xE82BC295, 0xC4C0B38F, 0xA49439C6, 0xE2BC1C08, 0xC754F3F4, 0x5885B995, 0xF069E0F6, 0xC9E48D88, 0x890E44D1, 0x5D6296EA, 0x348F01D, 0x40753D1E, 0x8BDE58E8, 0xF45DB3FB, 0x520DA3BA, 0xA45D45B5, 0x4BFC6790, 0x53F12296, 0xF309CF06, 0x9CD870BB, 0xFE5BEF67, 0x72B41299, 0x780A4B2, 0xEE4AF86C, 0x9B892024, 0x2BF9E9C7, 0x9A2E5E33, 0x25DAF7B0, 0xAD58B772, 0xF5993995, 0xC44E054D, 0xB2AA76CF, 0x8E082279, 0xAC4FB50, 0xB3423E2C, 0xC9634E75, 0x326B9AFF, 0xF644DE6B, 0x9FAC1CCD, 0xC86FB108, 0x4ABFEA7B, 0xBF65D6AA, 0xA7A638E0, 0x6D59C115, 0xC719C6BD, 0x6FD89483, 0xE4130EC2, 0x8E52AF0B, 0xA1B862BA, 0xB77EA28E, 0xD4A625A4, 0x629349D9, 0x49AAC194, 0x1A771E3C, 0x50277EE0, 0x4A485CD3, 0x1B10AD19, 0x1E32FBD2, 0xBC01EE29, 0x11725F90, 0xB92547F0, 0x6F81DD73, 0xD2B275E7, 0xDC8216A4, 0xFF69BCE9, 0x9F357F79, 0x87784D98, 0x6705C5C6, 0x6F259046, 0x29EEFCC0, 0xF5DC2284, 0xD474D9D0, 0x32B7A3AD, 0x2D379E07, 0x942CBB67, 0x53EADE9E, 0x8FA1BBAB, 0x4320375F, 0x8111F45C, 0x19695C21, 0x656BF846, 0xEBE401B9, 0x34407C0, 0x916E0F09, 0x15189DCD, 0x3FE43CF7, 0x37CEF945, 0xCC295A51, 0xBC360CA1, 0x236281B4, 0x53DD6F6E, 0xECC0E9B0, 0xD20EEB81, 0x83623D07, 0xD328DBD8, 0xA0D8D8C3, 0x89E2C3FA, 0x1F7A5413, 0xB6024069, 0x5FB3BFF4, 0xB2A09DB6, 0x68E21758, 0x1A7C56CA, 0xC6D3BA8A, 0x775345B4, 0x7E2EEA39, 0x4FF572AD, 0x6C15A3F3, 0x2A8E6082, 0xEEAB039F, 0xF3561467, 0x6D7FBAFE, 0x8D7A7AEC, 0x1B3CAFDA, 0xD87B8F59, 0x62E5C8AD, 0xBDC30AE7, 0x2D3E72EE, 0xA8C7B7A9, 0xC94E2947, 0x34207E85, 0x8145FDDB, 0xF1090B75, 0x966BE963, 0x46FC4C18, 0x790E222C, 0x707B35F9, 0x6C649629, 0x1D9A6857, 0x2EE5EAB9, 0xAE94E0D1, 0x46841CB3, 0x73D50C22, 0x550A8264, 0xA9A08D98, 0x89316B4A, 0x18A65B40, 0xFF97232A, 0xEBAD05AF, 0x49FDE0FA, 0xD816EF88, 0x446A2FCC, 0x260D6751, 0x77BB85CE, 0xBE99FD59, 0x1624423B, 0xE9D4704F, 0x7BE6965B, 0x61240FE9, 0xCE1DB2, 0xB6F0AA34, 0xCA470654, 0x67812EC6, 0xF9F91E3F, 0x97358BC8, 0xCBACF61F, 0x5E48F06A, 0x26AE2C40, 0x7220FF05, 0xF03D8411, 0x83BD8673, 0xEA31647D, 0xD1621938, 0x4053FADB, 0x9610ECF1, 0xC8FE2FD4, 0x67B4C019, 0x220780EE, 0x58BED138, 0x8CCCAFE5, 0xED498E77, 0xA2C6EBF3, 0xAF43D28D, 0x64EED8F, 0x9E2E0C1, 0xBAB1DDF7, 0x7E211481, 0xC85E9086, 0xB8271579, 0xBDD28591, 0xA3E90BBD, 0x68587B0, 0x2D49815F, 0xA0A773D, 0x58D0073B, 0x9D17D962, 0xDF16C1B1, 0xF06FC844, 0xBE86BB42, 0xAB3EC14E, 0x76DE33DC, 0x7B706F6E, 0xA6171F39, 0x7489E682, 0x3F0B4A16, 0x1256B029, 0x9EA15864, 0x7E4A3D02, 0xB92EBAF9, 0xE11A0D4B, 0xD8DD98CF, 0x1A3CE715, 0x6976E29D, 0xCD1B9E27, 0xB05896F1, 0x695A0858, 0x64A6EAA7, 0x983C39, 0x7645E7C0, 0xDA95DC29, 0x2BE2B757, 0xAC473ABE, 0x288BA3D7, 0x44145AB0, 0xFFA48813, 0x25C758FB, 0xF24ADD24, 0x65B452D2, 0x53DDC9CC, 0x620D6861, 0x86D2C51C, 0xCC2A4667, 0xAB29C836, 0x75E43548, 0x1C073DF0, 0xA4AF97D7, 0x23BD1A4C, 0x8BD5ADD1, 0x58592D6, 0xE69D80, 0x75D64D23, 0xD5A5FBB9, 0xAB30AAAA, 0x297830C6, 0xBA370FFE, 0xB806DC0F, 0xFB5593A5, 0x1D77108C, 0x90E87069, 0xBCB0E711, 0x2C961C68, 0x16709051, 0x5C99F11A, 0xCFD06A68, 0xB6867C1C, 0x56A4CD3E, 0xE2C9DFAF, 0x382A79E4, 0xE6BD8DE2, 0x3AE48637, 0x74BB8ACE, 0x51184EA9, 0x8D13F161, 0x57D352E7, 0xC5380E8, 0x1303F9BC, 0x31C393AF, 0x42FDC3AB, 0x49FFD0C7, 0x1C4F02A9, 0x84382507, 0xD77CE78F, 0x6B931DE7, 0xFE9BFCC, 0x3909976D, 0x5B3E23E1, 0x317D35B5, 0xC364B770, 0x1D127DE2, 0xAC4F0868, 0x49DE0240, 0x15DC8878, 0x37E415E3, 0x684BAF14, 0x87884B9C, 0x27136DFE, 0x43A5B63B, 0x1B7D78BF, 0xCE8DA61E, 0x4B935FD0, 0x56925DDA, 0x7962D62, 0x14A3E049, 0x4561C4E1, 0xBCD0F15D, 0xBFDC47E2, 0xCD2F8E77, 0xD497606C, 0x67D4768E, 0xC41B68F9, 0x41B84FD6, 0xAB585678, 0x4FD2190C, 0x4DF52D00, 0x97BE6B6E, 0x26EABE60, 0xA247CC2F, 0x6DA5F2EF, 0xEBD0729F, 0xE4494245, 0x4739C673, 0xF5513BC8, 0x5F4DE251, 0x724D34E2, 0x3366A14F, 0xD25F4C65, 0x790B4B3E, 0xB1BB07AC, 0x65DF3984, 0x6D25D116, 0xBE25D602, 0x9A91185D, 0x5DDD0F1F, 0xE5A91645, 0xC8CD0E76, 0xE6AA18CE, 0x290A46D9, 0x3E66A46, 0x84C550FA, 0x43114035, 0xC4FF8DB2, 0x79ADA9E, 0x2DCA45C9, 0x1DA1C7FB }; private byte[] Enc = new byte[8]; private byte[] Dec = new byte[8]; [DllImport("libeay32.dll", CallingConvention = CallingConvention.Cdecl)] public extern static void BF_encrypt(byte[] input, IntPtr schedule); [DllImport("libeay32.dll", CallingConvention = CallingConvention.Cdecl)] public extern static void BF_decrypt(byte[] input, IntPtr schedule); [StructLayout(LayoutKind.Sequential)] struct bf_key_st { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 18)] public UInt32[] P; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)] public UInt32[] S; } private IntPtr _key; public Blowfish() { bf_key_st key = new bf_key_st(); key.P = new uint[18]; key.S = new uint[1024]; for (int i = 0; i < 18; i++) { key.P[i] = P[i]; } for (int i = 0; i < 1024; i++) { key.S[i] = S[i]; } _key = Marshal.AllocHGlobal(key.P.Length * sizeof(UInt32) + key.S.Length * sizeof(UInt32)); Marshal.StructureToPtr(key, _key, false); } public void Encrypt(byte[] input, int offset, int length) { for (int i = offset; i < offset + input.Length; i += 8) { if (input.Length - i > 8) { Buffer.BlockCopy(input, i, Enc, 0, 8); BF_encrypt(Enc, _key); Buffer.BlockCopy(Enc, 0, input, i, 8); } } } public void Decrypt(byte[] input, int offset, int length) { for (int i = offset; i < offset + input.Length; i += 8) { if (input.Length - i > 8) { Buffer.BlockCopy(input, i, Dec, 0, 8); BF_decrypt(Dec, _key); Buffer.BlockCopy(Dec, 0, input, i, 8); } } } }
onSending():
Code:
public override void Send(byte[] buffer) { byte[] temp = new byte[buffer.Length + 4]; int length = IPAddress.NetworkToHostOrder(buffer.Length); length ^= 0x77777777; // encrypt/decrypt length of the packet! Array.Copy(BitConverter.GetBytes(length), temp, 4); Array.Copy(buffer, 0, temp, 4, buffer.Length); bf.Encrypt(temp, 4, buffer.Length); base.Send(temp); }
Code:
protected override void OnReceived(byte[] buffer) { //get the correct length , TODO make a queue int len = IPAddress.HostToNetworkOrder(BitConverter.ToInt32(buffer, 0)) ^ 0x77777777; //you have to covert what ever you will read to NetworkToHostOrder, to be able to understand the packets! gameHandler.Handle(buffer,len); }
sniffed packets:
in the attachment!
I really wanted to make a server , but I didn't have time , this codes could help someone making a base server, and with time and effort he could manage to make a full server.