Criptografia BlowFish!

Boa tarde a todos,
Estou precisando desenvolver uma classe que criptografa e descriptografa no algoritimo blowfish, porem com isso vem os problemas, o cliente usa no sistema dele standalone VB6 que possui uma classe de criptografia, e eu achei na net alguns exemplos porem os resultados nao são iguais.

Vou Colocar a Classe em VB e um metodo q achei em java porem cada um retorna um valor.

Sera quem alguem pode me ajudar

VB6
Option Explicit
Option Base 0

’ basBlfArrays: Initialises P-array and S-boxes for Blowfish algorithm

’ First published October 2000.
'************************* COPYRIGHT NOTICE*************************
’ This code was originally written in Visual Basic by David Ireland
’ and is copyright © 2000-2 D.I. Management Services Pty Limited,
’ all rights reserved.

’ You are free to use this code as part of your own applications
’ provided you keep this copyright notice intact and acknowledge
’ its authorship with the words:

’ “Contains cryptography software by David Ireland of
’ DI Management Services Pty Ltd <www.di-mgt.com.au>.”

’ If you use it as part of a web site, please include a link
’ to our site in the form
Cryptography
’ Software Code

’ This code may only be used as part of an application. It may
’ not be reproduced or distributed separately by any means without
’ the express written permission of the author.

’ David Ireland and DI Management Services Pty Limited make no
’ representations concerning either the merchantability of this
’ software or the suitability of this software for any particular
’ purpose. It is provided “as is” without express or implied
’ warranty of any kind.

’ Please forward comments or bug reports to code@di-mgt.com.au.
’ The latest version of this source code can be downloaded from
’ www.di-mgt.com.au/crypto.html.
'****************** END OF COPYRIGHT NOTICE*************************
Public Const ncROUNDS As Integer = 16
Public Const ncMAXKEYLEN As Integer = 56
Private Const OFFSET_4 = 4294967296#
Private Const MAXINT_4 = 2147483647

Public StrCipher As String

Public blf_P(17) As Long
Public blf_S(3, 255) As Long

Dim aKey() As Byte
Dim HexaKey As String
Dim StrCleanTextKey As String

Public Function Blowfish_LoadArrays()
’ Use Array fn and a temp variant array to load data into arrays
Dim vntA As Variant
Dim i As Integer

' P-array
vntA = Array( _
    &H243F6A88, &H85A308D3, &H13198A2E, &H3707344, _
    &HA4093822, &H299F31D0, &H82EFA98, &HEC4E6C89, _
    &H452821E6, &H38D01377, &HBE5466CF, &H34E90C6C, _
    &HC0AC29B7, &HC97C50DD, &H3F84D5B5, &HB5470917, _
    &H9216D5D9, &H8979FB1B)

For i = 0 To 17
    blf_P(i) = vntA(i)
Next

' Load S-boxes - 16 x 4 at a time

' S-box[0]
vntA = Array( _
    &HD1310BA6, &H98DFB5AC, &H2FFD72DB, &HD01ADFB7, _
    &HB8E1AFED, &H6A267E96, &HBA7C9045, &HF12C7F99, _
    &H24A19947, &HB3916CF7, &H801F2E2, &H858EFC16, _
    &H636920D8, &H71574E69, &HA458FEA3, &HF4933D7E, _
    &HD95748F, &H728EB658, &H718BCD58, &H82154AEE, _
    &H7B54A41D, &HC25A59B5, &H9C30D539, &H2AF26013, _
    &HC5D1B023, &H286085F0, &HCA417918, &HB8DB38EF, _
    &H8E79DCB0, &H603A180E, &H6C9E0E8B, &HB01E8A3E, _
    &HD71577C1, &HBD314B27, &H78AF2FDA, &H55605C60, _
    &HE65525F3, &HAA55AB94, &H57489862, &H63E81440, _
    &H55CA396A, &H2AAB10B6, &HB4CC5C34, &H1141E8CE, _
    &HA15486AF, &H7C72E993, &HB3EE1411, &H636FBC2A, _
    &H2BA9C55D, &H741831F6, &HCE5C3E16, &H9B87931E, _
    &HAFD6BA33, &H6C24CF5C, &H7A325381, &H28958677, _
    &H3B8F4898, &H6B4BB9AF, &HC4BFE81B, &H66282193, _
    &H61D809CC, &HFB21A991, &H487CAC60, &H5DEC8032)
    
For i = 0 To 63
    blf_S(0, i) = vntA(i)
Next

vntA = Array( _
    &HEF845D5D, &HE98575B1, &HDC262302, &HEB651B88, _
    &H23893E81, &HD396ACC5, &HF6D6FF3, &H83F44239, _
    &H2E0B4482, &HA4842004, &H69C8F04A, &H9E1F9B5E, _
    &H21C66842, &HF6E96C9A, &H670C9C61, &HABD388F0, _
    &H6A51A0D2, &HD8542F68, &H960FA728, &HAB5133A3, _
    &H6EEF0B6C, &H137A3BE4, &HBA3BF050, &H7EFB2A98, _
    &HA1F1651D, &H39AF0176, &H66CA593E, &H82430E88, _
    &H8CEE8619, &H456F9FB4, &H7D84A5C3, &H3B8B5EBE, _
    &HE06F75D8, &H85C12073, &H401A449F, &H56C16AA6, _
    &H4ED3AA62, &H363F7706, &H1BFEDF72, &H429B023D, _
    &H37D0D724, &HD00A1248, &HDB0FEAD3, &H49F1C09B, _
    &H75372C9, &H80991B7B, &H25D479D8, &HF6E8DEF7, _
    &HE3FE501A, &HB6794C3B, &H976CE0BD, &H4C006BA, _
    &HC1A94FB6, &H409F60C4, &H5E5C9EC2, &H196A2463, _
    &H68FB6FAF, &H3E6C53B5, &H1339B2EB, &H3B52EC6F, _
    &H6DFC511F, &H9B30952C, &HCC814544, &HAF5EBD09)
    
For i = 0 To 63     '64 To 127
    blf_S(0, i + 64) = vntA(i)
Next
    
vntA = Array( _
    &HBEE3D004, &HDE334AFD, &H660F2807, &H192E4BB3, _
    &HC0CBA857, &H45C8740F, &HD20B5F39, &HB9D3FBDB, _
    &H5579C0BD, &H1A60320A, &HD6A100C6, &H402C7279, _
    &H679F25FE, &HFB1FA3CC, &H8EA5E9F8, &HDB3222F8, _
    &H3C7516DF, &HFD616B15, &H2F501EC8, &HAD0552AB, _
    &H323DB5FA, &HFD238760, &H53317B48, &H3E00DF82, _
    &H9E5C57BB, &HCA6F8CA0, &H1A87562E, &HDF1769DB, _
    &HD542A8F6, &H287EFFC3, &HAC6732C6, &H8C4F5573, _
    &H695B27B0, &HBBCA58C8, &HE1FFA35D, &HB8F011A0, _
    &H10FA3D98, &HFD2183B8, &H4AFCB56C, &H2DD1D35B, _
    &H9A53E479, &HB6F84565, &HD28E49BC, &H4BFB9790, _
    &HE1DDF2DA, &HA4CB7E33, &H62FB1341, &HCEE4C6E8, _
    &HEF20CADA, &H36774C01, &HD07E9EFE, &H2BF11FB4, _
    &H95DBDA4D, &HAE909198, &HEAAD8E71, &H6B93D5A0, _
    &HD08ED1D0, &HAFC725E0, &H8E3C5B2F, &H8E7594B7, _
    &H8FF6E2FB, &HF2122B64, &H8888B812, &H900DF01C)
    
For i = 0 To 63     ' 128 To 191
    blf_S(0, i + 128) = vntA(i)
Next
    
vntA = Array( _
    &H4FAD5EA0, &H688FC31C, &HD1CFF191, &HB3A8C1AD, _
    &H2F2F2218, &HBE0E1777, &HEA752DFE, &H8B021FA1, _
    &HE5A0CC0F, &HB56F74E8, &H18ACF3D6, &HCE89E299, _
    &HB4A84FE0, &HFD13E0B7, &H7CC43B81, &HD2ADA8D9, _
    &H165FA266, &H80957705, &H93CC7314, &H211A1477, _
    &HE6AD2065, &H77B5FA86, &HC75442F5, &HFB9D35CF, _
    &HEBCDAF0C, &H7B3E89A0, &HD6411BD3, &HAE1E7E49, _
    &H250E2D, &H2071B35E, &H226800BB, &H57B8E0AF, _
    &H2464369B, &HF009B91E, &H5563911D, &H59DFA6AA, _
    &H78C14389, &HD95A537F, &H207D5BA2, &H2E5B9C5, _
    &H83260376, &H6295CFA9, &H11C81968, &H4E734A41, _
    &HB3472DCA, &H7B14A94A, &H1B510052, &H9A532915, _
    &HD60F573F, &HBC9BC6E4, &H2B60A476, &H81E67400, _
    &H8BA6FB5, &H571BE91F, &HF296EC6B, &H2A0DD915, _
    &HB6636521, &HE7B9F9B6, &HFF34052E, &HC5855664, _
    &H53B02D5D, &HA99F8FA1, &H8BA4799, &H6E85076A)

For i = 0 To 63     ' 192 To 255
    blf_S(0, i + 192) = vntA(i)
Next

' S-box[1]
vntA = Array( _
    &H4B7A70E9, &HB5B32944, &HDB75092E, &HC4192623, _
    &HAD6EA6B0, &H49A7DF7D, &H9CEE60B8, &H8FEDB266, _
    &HECAA8C71, &H699A17FF, &H5664526C, &HC2B19EE1, _
    &H193602A5, &H75094C29, &HA0591340, &HE4183A3E, _
    &H3F54989A, &H5B429D65, &H6B8FE4D6, &H99F73FD6, _
    &HA1D29C07, &HEFE830F5, &H4D2D38E6, &HF0255DC1, _
    &H4CDD2086, &H8470EB26, &H6382E9C6, &H21ECC5E, _
    &H9686B3F, &H3EBAEFC9, &H3C971814, &H6B6A70A1, _
    &H687F3584, &H52A0E286, &HB79C5305, &HAA500737, _
    &H3E07841C, &H7FDEAE5C, &H8E7D44EC, &H5716F2B8, _
    &HB03ADA37, &HF0500C0D, &HF01C1F04, &H200B3FF, _
    &HAE0CF51A, &H3CB574B2, &H25837A58, &HDC0921BD, _
    &HD19113F9, &H7CA92FF6, &H94324773, &H22F54701, _
    &H3AE5E581, &H37C2DADC, &HC8B57634, &H9AF3DDA7, _
    &HA9446146, &HFD0030E, &HECC8C73E, &HA4751E41, _
    &HE238CD99, &H3BEA0E2F, &H3280BBA1, &H183EB331)
    
For i = 0 To 63
    blf_S(1, i) = vntA(i)
Next
    
vntA = Array( _
    &H4E548B38, &H4F6DB908, &H6F420D03, &HF60A04BF, _
    &H2CB81290, &H24977C79, &H5679B072, &HBCAF89AF, _
    &HDE9A771F, &HD9930810, &HB38BAE12, &HDCCF3F2E, _
    &H5512721F, &H2E6B7124, &H501ADDE6, &H9F84CD87, _
    &H7A584718, &H7408DA17, &HBC9F9ABC, &HE94B7D8C, _
    &HEC7AEC3A, &HDB851DFA, &H63094366, &HC464C3D2, _
    &HEF1C1847, &H3215D908, &HDD433B37, &H24C2BA16, _
    &H12A14D43, &H2A65C451, &H50940002, &H133AE4DD, _
    &H71DFF89E, &H10314E55, &H81AC77D6, &H5F11199B, _
    &H43556F1, &HD7A3C76B, &H3C11183B, &H5924A509, _
    &HF28FE6ED, &H97F1FBFA, &H9EBABF2C, &H1E153C6E, _
    &H86E34570, &HEAE96FB1, &H860E5E0A, &H5A3E2AB3, _
    &H771FE71C, &H4E3D06FA, &H2965DCB9, &H99E71D0F, _
    &H803E89D6, &H5266C825, &H2E4CC978, &H9C10B36A, _
    &HC6150EBA, &H94E2EA78, &HA5FC3C53, &H1E0A2DF4, _
    &HF2F74EA7, &H361D2B3D, &H1939260F, &H19C27960)
    
For i = 0 To 63     '64 To 127
    blf_S(1, i + 64) = vntA(i)
Next
    
vntA = Array( _
    &H5223A708, &HF71312B6, &HEBADFE6E, &HEAC31F66, _
    &HE3BC4595, &HA67BC883, &HB17F37D1, &H18CFF28, _
    &HC332DDEF, &HBE6C5AA5, &H65582185, &H68AB9802, _
    &HEECEA50F, &HDB2F953B, &H2AEF7DAD, &H5B6E2F84, _
    &H1521B628, &H29076170, &HECDD4775, &H619F1510, _
    &H13CCA830, &HEB61BD96, &H334FE1E, &HAA0363CF, _
    &HB5735C90, &H4C70A239, &HD59E9E0B, &HCBAADE14, _
    &HEECC86BC, &H60622CA7, &H9CAB5CAB, &HB2F3846E, _
    &H648B1EAF, &H19BDF0CA, &HA02369B9, &H655ABB50, _
    &H40685A32, &H3C2AB4B3, &H319EE9D5, &HC021B8F7, _
    &H9B540B19, &H875FA099, &H95F7997E, &H623D7DA8, _
    &HF837889A, &H97E32D77, &H11ED935F, &H16681281, _
    &HE358829, &HC7E61FD6, &H96DEDFA1, &H7858BA99, _
    &H57F584A5, &H1B227263, &H9B83C3FF, &H1AC24696, _
    &HCDB30AEB, &H532E3054, &H8FD948E4, &H6DBC3128, _
    &H58EBF2EF, &H34C6FFEA, &HFE28ED61, &HEE7C3C73)
    
For i = 0 To 63     ' 128 To 191
    blf_S(1, i + 128) = vntA(i)
Next
    
vntA = Array( _
    &H5D4A14D9, &HE864B7E3, &H42105D14, &H203E13E0, _
    &H45EEE2B6, &HA3AAABEA, &HDB6C4F15, &HFACB4FD0, _
    &HC742F442, &HEF6ABBB5, &H654F3B1D, &H41CD2105, _
    &HD81E799E, &H86854DC7, &HE44B476A, &H3D816250, _
    &HCF62A1F2, &H5B8D2646, &HFC8883A0, &HC1C7B6A3, _
    &H7F1524C3, &H69CB7492, &H47848A0B, &H5692B285, _
    &H95BBF00, &HAD19489D, &H1462B174, &H23820E00, _
    &H58428D2A, &HC55F5EA, &H1DADF43E, &H233F7061, _
    &H3372F092, &H8D937E41, &HD65FECF1, &H6C223BDB, _
    &H7CDE3759, &HCBEE7460, &H4085F2A7, &HCE77326E, _
    &HA6078084, &H19F8509E, &HE8EFD855, &H61D99735, _
    &HA969A7AA, &HC50C06C2, &H5A04ABFC, &H800BCADC, _
    &H9E447A2E, &HC3453484, &HFDD56705, &HE1E9EC9, _
    &HDB73DBD3, &H105588CD, &H675FDA79, &HE3674340, _
    &HC5C43465, &H713E38D8, &H3D28F89E, &HF16DFF20, _
    &H153E21E7, &H8FB03D4A, &HE6E39F2B, &HDB83ADF7)
    
For i = 0 To 63     ' 192 To 255
    blf_S(1, i + 192) = vntA(i)
Next

' S-box[2]
vntA = Array( _
    &HE93D5A68, &H948140F7, &HF64C261C, &H94692934, _
    &H411520F7, &H7602D4F7, &HBCF46B2E, &HD4A20068, _
    &HD4082471, &H3320F46A, &H43B7D4B7, &H500061AF, _
    &H1E39F62E, &H97244546, &H14214F74, &HBF8B8840, _
    &H4D95FC1D, &H96B591AF, &H70F4DDD3, &H66A02F45, _
    &HBFBC09EC, &H3BD9785, &H7FAC6DD0, &H31CB8504, _
    &H96EB27B3, &H55FD3941, &HDA2547E6, &HABCA0A9A, _
    &H28507825, &H530429F4, &HA2C86DA, &HE9B66DFB, _
    &H68DC1462, &HD7486900, &H680EC0A4, &H27A18DEE, _
    &H4F3FFEA2, &HE887AD8C, &HB58CE006, &H7AF4D6B6, _
    &HAACE1E7C, &HD3375FEC, &HCE78A399, &H406B2A42, _
    &H20FE9E35, &HD9F385B9, &HEE39D7AB, &H3B124E8B, _
    &H1DC9FAF7, &H4B6D1856, &H26A36631, &HEAE397B2, _
    &H3A6EFA74, &HDD5B4332, &H6841E7F7, &HCA7820FB, _
    &HFB0AF54E, &HD8FEB397, &H454056AC, &HBA489527, _
    &H55533A3A, &H20838D87, &HFE6BA9B7, &HD096954B)
    
For i = 0 To 63
    blf_S(2, i) = vntA(i)
Next
    
vntA = Array( _
    &H55A867BC, &HA1159A58, &HCCA92963, &H99E1DB33, _
    &HA62A4A56, &H3F3125F9, &H5EF47E1C, &H9029317C, _
    &HFDF8E802, &H4272F70, &H80BB155C, &H5282CE3, _
    &H95C11548, &HE4C66D22, &H48C1133F, &HC70F86DC, _
    &H7F9C9EE, &H41041F0F, &H404779A4, &H5D886E17, _
    &H325F51EB, &HD59BC0D1, &HF2BCC18F, &H41113564, _
    &H257B7834, &H602A9C60, &HDFF8E8A3, &H1F636C1B, _
    &HE12B4C2, &H2E1329E, &HAF664FD1, &HCAD18115, _
    &H6B2395E0, &H333E92E1, &H3B240B62, &HEEBEB922, _
    &H85B2A20E, &HE6BA0D99, &HDE720C8C, &H2DA2F728, _
    &HD0127845, &H95B794FD, &H647D0862, &HE7CCF5F0, _
    &H5449A36F, &H877D48FA, &HC39DFD27, &HF33E8D1E, _
    &HA476341, &H992EFF74, &H3A6F6EAB, &HF4F8FD37, _
    &HA812DC60, &HA1EBDDF8, &H991BE14C, &HDB6E6B0D, _
    &HC67B5510, &H6D672C37, &H2765D43B, &HDCD0E804, _
    &HF1290DC7, &HCC00FFA3, &HB5390F92, &H690FED0B)
    
For i = 0 To 63     '64 To 127
    blf_S(2, i + 64) = vntA(i)
Next
    
vntA = Array( _
    &H667B9FFB, &HCEDB7D9C, &HA091CF0B, &HD9155EA3, _
    &HBB132F88, &H515BAD24, &H7B9479BF, &H763BD6EB, _
    &H37392EB3, &HCC115979, &H8026E297, &HF42E312D, _
    &H6842ADA7, &HC66A2B3B, &H12754CCC, &H782EF11C, _
    &H6A124237, &HB79251E7, &H6A1BBE6, &H4BFB6350, _
    &H1A6B1018, &H11CAEDFA, &H3D25BDD8, &HE2E1C3C9, _
    &H44421659, &HA121386, &HD90CEC6E, &HD5ABEA2A, _
    &H64AF674E, &HDA86A85F, &HBEBFE988, &H64E4C3FE, _
    &H9DBC8057, &HF0F7C086, &H60787BF8, &H6003604D, _
    &HD1FD8346, &HF6381FB0, &H7745AE04, &HD736FCCC, _
    &H83426B33, &HF01EAB71, &HB0804187, &H3C005E5F, _
    &H77A057BE, &HBDE8AE24, &H55464299, &HBF582E61, _
    &H4E58F48F, &HF2DDFDA2, &HF474EF38, &H8789BDC2, _
    &H5366F9C3, &HC8B38E74, &HB475F255, &H46FCD9B9, _
    &H7AEB2661, &H8B1DDF84, &H846A0E79, &H915F95E2, _
    &H466E598E, &H20B45770, &H8CD55591, &HC902DE4C)
    
For i = 0 To 63     ' 128 To 191
    blf_S(2, i + 128) = vntA(i)
Next
    
vntA = Array( _
    &HB90BACE1, &HBB8205D0, &H11A86248, &H7574A99E, _
    &HB77F19B6, &HE0A9DC09, &H662D09A1, &HC4324633, _
    &HE85A1F02, &H9F0BE8C, &H4A99A025, &H1D6EFE10, _
    &H1AB93D1D, &HBA5A4DF, &HA186F20F, &H2868F169, _
    &HDCB7DA83, &H573906FE, &HA1E2CE9B, &H4FCD7F52, _
    &H50115E01, &HA70683FA, &HA002B5C4, &HDE6D027, _
    &H9AF88C27, &H773F8641, &HC3604C06, &H61A806B5, _
    &HF0177A28, &HC0F586E0, &H6058AA, &H30DC7D62, _
    &H11E69ED7, &H2338EA63, &H53C2DD94, &HC2C21634, _
    &HBBCBEE56, &H90BCB6DE, &HEBFC7DA1, &HCE591D76, _
    &H6F05E409, &H4B7C0188, &H39720A3D, &H7C927C24, _
    &H86E3725F, &H724D9DB9, &H1AC15BB4, &HD39EB8FC, _
    &HED545578, &H8FCA5B5, &HD83D7CD3, &H4DAD0FC4, _
    &H1E50EF5E, &HB161E6F8, &HA28514D9, &H6C51133C, _
    &H6FD5C7E7, &H56E14EC4, &H362ABFCE, &HDDC6C837, _
    &HD79A3234, &H92638212, &H670EFA8E, &H406000E0)
    
For i = 0 To 63     ' 192 To 255
    blf_S(2, i + 192) = vntA(i)
Next

' S-box[3]
vntA = Array( _
    &H3A39CE37, &HD3FAF5CF, &HABC27737, &H5AC52D1B, _
    &H5CB0679E, &H4FA33742, &HD3822740, &H99BC9BBE, _
    &HD5118E9D, &HBF0F7315, &HD62D1C7E, &HC700C47B, _
    &HB78C1B6B, &H21A19045, &HB26EB1BE, &H6A366EB4, _
    &H5748AB2F, &HBC946E79, &HC6A376D2, &H6549C2C8, _
    &H530FF8EE, &H468DDE7D, &HD5730A1D, &H4CD04DC6, _
    &H2939BBDB, &HA9BA4650, &HAC9526E8, &HBE5EE304, _
    &HA1FAD5F0, &H6A2D519A, &H63EF8CE2, &H9A86EE22, _
    &HC089C2B8, &H43242EF6, &HA51E03AA, &H9CF2D0A4, _
    &H83C061BA, &H9BE96A4D, &H8FE51550, &HBA645BD6, _
    &H2826A2F9, &HA73A3AE1, &H4BA99586, &HEF5562E9, _
    &HC72FEFD3, &HF752F7DA, &H3F046F69, &H77FA0A59, _
    &H80E4A915, &H87B08601, &H9B09E6AD, &H3B3EE593, _
    &HE990FD5A, &H9E34D797, &H2CF0B7D9, &H22B8B51, _
    &H96D5AC3A, &H17DA67D, &HD1CF3ED6, &H7C7D2D28, _
    &H1F9F25CF, &HADF2B89B, &H5AD6B472, &H5A88F54C)
    
For i = 0 To 63
    blf_S(3, i) = vntA(i)
Next
    
vntA = Array( _
    &HE029AC71, &HE019A5E6, &H47B0ACFD, &HED93FA9B, _
    &HE8D3C48D, &H283B57CC, &HF8D56629, &H79132E28, _
    &H785F0191, &HED756055, &HF7960E44, &HE3D35E8C, _
    &H15056DD4, &H88F46DBA, &H3A16125, &H564F0BD, _
    &HC3EB9E15, &H3C9057A2, &H97271AEC, &HA93A072A, _
    &H1B3F6D9B, &H1E6321F5, &HF59C66FB, &H26DCF319, _
    &H7533D928, &HB155FDF5, &H3563482, &H8ABA3CBB, _
    &H28517711, &HC20AD9F8, &HABCC5167, &HCCAD925F, _
    &H4DE81751, &H3830DC8E, &H379D5862, &H9320F991, _
    &HEA7A90C2, &HFB3E7BCE, &H5121CE64, &H774FBE32, _
    &HA8B6E37E, &HC3293D46, &H48DE5369, &H6413E680, _
    &HA2AE0810, &HDD6DB224, &H69852DFD, &H9072166, _
    &HB39A460A, &H6445C0DD, &H586CDECF, &H1C20C8AE, _
    &H5BBEF7DD, &H1B588D40, &HCCD2017F, &H6BB4E3BB, _
    &HDDA26A7E, &H3A59FF45, &H3E350A44, &HBCB4CDD5, _
    &H72EACEA8, &HFA6484BB, &H8D6612AE, &HBF3C6F47)
    
For i = 0 To 63     '64 To 127
    blf_S(3, i + 64) = vntA(i)
Next
    
vntA = Array( _
    &HD29BE463, &H542F5D9E, &HAEC2771B, &HF64E6370, _
    &H740E0D8D, &HE75B1357, &HF8721671, &HAF537D5D, _
    &H4040CB08, &H4EB4E2CC, &H34D2466A, &H115AF84, _
    &HE1B00428, &H95983A1D, &H6B89FB4, &HCE6EA048, _
    &H6F3F3B82, &H3520AB82, &H11A1D4B, &H277227F8, _
    &H611560B1, &HE7933FDC, &HBB3A792B, &H344525BD, _
    &HA08839E1, &H51CE794B, &H2F32C9B7, &HA01FBAC9, _
    &HE01CC87E, &HBCC7D1F6, &HCF0111C3, &HA1E8AAC7, _
    &H1A908749, &HD44FBD9A, &HD0DADECB, &HD50ADA38, _
    &H339C32A, &HC6913667, &H8DF9317C, &HE0B12B4F, _
    &HF79E59B7, &H43F5BB3A, &HF2D519FF, &H27D9459C, _
    &HBF97222C, &H15E6FC2A, &HF91FC71, &H9B941525, _
    &HFAE59361, &HCEB69CEB, &HC2A86459, &H12BAA8D1, _
    &HB6C1075E, &HE3056A0C, &H10D25065, &HCB03A442, _
    &HE0EC6E0E, &H1698DB3B, &H4C98A0BE, &H3278E964, _
    &H9F1F9532, &HE0D392DF, &HD3A0342B, &H8971F21E)
    
For i = 0 To 63     ' 128 To 191
    blf_S(3, i + 128) = vntA(i)
Next
    
vntA = Array( _
    &H1B0A7441, &H4BA3348C, &HC5BE7120, &HC37632D8, _
    &HDF359F8D, &H9B992F2E, &HE60B6F47, &HFE3F11D, _
    &HE54CDA54, &H1EDAD891, &HCE6279CF, &HCD3E7E6F, _
    &H1618B166, &HFD2C1D05, &H848FD2C5, &HF6FB2299, _
    &HF523F357, &HA6327623, &H93A83531, &H56CCCD02, _
    &HACF08162, &H5A75EBB5, &H6E163697, &H88D273CC, _
    &HDE966292, &H81B949D0, &H4C50901B, &H71C65614, _
    &HE6C6C7BD, &H327A140A, &H45E1D006, &HC3F27B9A, _
    &HC9AA53FD, &H62A80F00, &HBB25BFE2, &H35BDD2F6, _
    &H71126905, &HB2040222, &HB6CBCF7C, &HCD769C2B, _
    &H53113EC0, &H1640E3D3, &H38ABBD60, &H2547ADF0, _
    &HBA38209C, &HF746CE76, &H77AFA1C5, &H20756060, _
    &H85CBFE4E, &H8AE88DD8, &H7AAAF9B0, &H4CF9AA7E, _
    &H1948C25C, &H2FB8A8C, &H1C36AE4, &HD6EBE1F9, _
    &H90D4F869, &HA65CDEA0, &H3F09252D, &HC208E69F, _
    &HB74E6132, &HCE77E25B, &H578FDFE3, &H3AC372E6)

For i = 0 To 63     ' 192 To 255
    blf_S(3, i + 192) = vntA(i)
Next

' DEBUG: Check for zeroes
Dim J As Integer
For i = 0 To 3
    For J = 0 To 255
        If blf_S(i, J) = 0 Then
            MsgBox "Zero value in S" & i & "," & J & ")"
        End If
    Next
Next

End Function

Public Function Blowfish_KeyInit(aKey() As Byte) As Boolean
Dim NKeyLen As Integer
Blowfish_KeyInit = False
NKeyLen = UBound(aKey) - LBound(aKey) + 1
If NKeyLen < 0 Or NKeyLen > ncMAXKEYLEN Then
Exit Function
End If
Call Blowfish_Initialise(aKey, NKeyLen)
Blowfish_KeyInit = True
End Function

Public Function Blowfish_Initialise(aKey() As Byte, nKeyBytes As Integer)
Dim i As Integer, J As Integer, K As Integer
Dim wData As Long, wDataL As Long, wDataR As Long
Call Blowfish_LoadArrays
J = 0
For i = 0 To (ncROUNDS + 2 - 1)
wData = &H0
For K = 0 To 3
wData = UnicodeWord_ShiftLeftBy8(wData) Or aKey(J)
J = J + 1
If J >= nKeyBytes Then J = 0
Next K
blf_P(i) = blf_P(i) Xor wData
Next i
wDataL = &H0
wDataR = &H0
For i = 0 To (ncROUNDS + 2 - 1) Step 2
Call Blowfish_EncipherBlock(wDataL, wDataR)
blf_P(i) = wDataL
blf_P(i + 1) = wDataR
Next i
For i = 0 To 3
For J = 0 To 255 Step 2
Call Blowfish_EncipherBlock(wDataL, wDataR)
blf_S(i, J) = wDataL
blf_S(i, J + 1) = wDataR
Next J
Next i
End Function

Private Function blf_F(X As Long) As Long
Dim a As Byte, b As Byte, C As Byte, d As Byte
Dim Y As Long
Call UnicodeWord_Split(X, a, b, C, d)
Y = UnicodeWord_WordAdd(blf_S(0, a), blf_S(1, b))
Y = Y Xor blf_S(2, C)
Y = UnicodeWord_WordAdd(Y, blf_S(3, d))
blf_F = Y
End Function

Public Function Blowfish_EncipherBlock(xL As Long, xR As Long)
Dim i As Integer
Dim Temp As Long
For i = 0 To ncROUNDS - 1
xL = xL Xor blf_P(i)
xR = blf_F(xL) Xor xR
Temp = xL
xL = xR
xR = Temp
Next
Temp = xL
xL = xR
xR = Temp
xR = xR Xor blf_P(ncROUNDS)
xL = xL Xor blf_P(ncROUNDS + 1)
End Function

Public Function Blowfish_DecipherBlock(xL As Long, xR As Long)
Dim i As Integer
Dim Temp As Long
For i = ncROUNDS + 1 To 2 Step -1
xL = xL Xor blf_P(i)
xR = blf_F(xL) Xor xR
Temp = xL
xL = xR
xR = Temp
Next
Temp = xL
xL = xR
xR = Temp
xR = xR Xor blf_P(1)
xL = xL Xor blf_P(0)
End Function

Public Function Blowfish_StringEnc(strData As String) As String
Dim StrIn As String
Dim StrOut As String
Dim NLen As Long
Dim SPad As String
Dim NPad As Integer
Dim NBlocks As Long
Dim i As Long
Dim aBytes() As Byte
Dim SBlock As String * 8
Dim IIndex As Long
NLen = Len(strData)
NPad = ((NLen \ 8) + 1) * 8 - NLen
SPad = String(NPad, Chr(NPad)) ’ Pad with # of pads (1-8)
StrIn = strData & SPad
NLen = Len(StrIn)
NBlocks = NLen \ 8
StrOut = String(NLen, " ")
IIndex = 0
For i = 1 To NBlocks
SBlock = Mid$(StrIn, IIndex + 1, 8)
aBytes() = StrConv(SBlock, vbFromUnicode)
Call Blowfish_EncryptBytes(aBytes())
SBlock = StrConv(aBytes(), vbUnicode)
Mid$(StrOut, IIndex + 1, 8) = SBlock
IIndex = IIndex + 8
Next
Blowfish_StringEnc = StrOut
End Function

Public Function Blowfish_EncryptBytes(aBytes() As Byte)
Dim wordL As Long, wordR As Long
wordL = UnicodeWord_Join(aBytes(0), aBytes(1), aBytes(2), aBytes(3))
wordR = UnicodeWord_Join(aBytes(4), aBytes(5), aBytes(6), aBytes(7))
Call Blowfish_EncipherBlock(wordL, wordR)
Call UnicodeWord_Split(wordL, aBytes(0), aBytes(1), aBytes(2), aBytes(3))
Call UnicodeWord_Split(wordR, aBytes(4), aBytes(5), aBytes(6), aBytes(7))
End Function

Public Function Blowfish_StringDec(strData As String) As String
Dim StrIn As String
Dim StrOut As String
Dim NLen As Long
Dim NPad As Integer
Dim NBlocks As Long
Dim i As Long
Dim aBytes() As Byte
Dim SBlock As String * 8
Dim IIndex As Long
StrIn = strData
NLen = Len(StrIn)
NBlocks = NLen \ 8
StrOut = String(NLen, " ")
IIndex = 0
For i = 1 To NBlocks
SBlock = Mid$(StrIn, IIndex + 1, 8)
aBytes() = StrConv(SBlock, vbFromUnicode)
Call Blowfish_DecryptBytes(aBytes())
SBlock = StrConv(aBytes(), vbUnicode)
Mid$(StrOut, IIndex + 1, 8) = SBlock
IIndex = IIndex + 8
Next
NPad = Asc(Right$(StrOut, 1))
If NPad > 8 Then NPad = 0
StrOut = Left$(StrOut, NLen - NPad)
Blowfish_StringDec = StrOut
End Function

Public Function Blowfish_DecryptBytes(aBytes() As Byte)
Dim wordL As Long, wordR As Long
wordL = UnicodeWord_Join(aBytes(0), aBytes(1), aBytes(2), aBytes(3))
wordR = UnicodeWord_Join(aBytes(4), aBytes(5), aBytes(6), aBytes(7))
Call Blowfish_DecipherBlock(wordL, wordR)
Call UnicodeWord_Split(wordL, aBytes(0), aBytes(1), aBytes(2), aBytes(3))
Call UnicodeWord_Split(wordR, aBytes(4), aBytes(5), aBytes(6), aBytes(7))
End Function

Public Function Convert_BytesFromHex(ByVal SInputHex As String) As Variant
Dim i As Long
Dim M As Long
Dim aBytes() As Byte
If Len(SInputHex) Mod 2 <> 0 Then
SInputHex = “0” & SInputHex
End If
M = Len(SInputHex) \ 2
ReDim aBytes(M - 1)
For i = 0 To M - 1
aBytes(i) = Val("&H" & Mid$(SInputHex, i * 2 + 1, 2))
Next
Convert_BytesFromHex = aBytes
End Function

Public Function Convert_HexFromBytes(aBytes() As Byte) As String
Dim i As Long
Dim IIndex As Long
Convert_HexFromBytes = String((UBound(aBytes) - LBound(aBytes) + 1) * 2, " ")
IIndex = 0
For i = LBound(aBytes) To UBound(aBytes)
Mid$(Convert_HexFromBytes, IIndex + 1, 2) = HexFromByte(aBytes(i))
IIndex = IIndex + 2
Next
End Function

Public Function Convert_HexFromString(StrToConvert As String) As String
Dim Byt As Byte
Dim i As Long
Dim N As Long
Dim IIndex As Long
Dim SHex As String
N = Len(StrToConvert)
SHex = String(N * 2, " ")
IIndex = 0
For i = 1 To N
Byt = CByte(Asc(Mid$(StrToConvert, i, 1)) And &HFF)
Mid$(SHex, IIndex + 1, 2) = HexFromByte(Byt)
IIndex = IIndex + 2
Next
Convert_HexFromString = SHex
End Function

Public Function Convert_StringFromHex(StrToConvert As String) As String
Dim i As Integer
Dim nbytes As Integer
nbytes = Len(StrToConvert) \ 2
Convert_StringFromHex = String(nbytes, " “)
For i = 0 To nbytes - 1
Mid$(Convert_StringFromHex, i + 1, 1) = Chr$(Val(”&H" & Mid$(StrToConvert, i * 2 + 1, 2)))
Next
End Function

Public Function EncriptToCipher(StrText As String) As String
Call CriptSetKey
StrCipher = Blowfish_StringEnc(StrText)
EncriptToCipher = StrCipher
End Function

Public Function DecriptFromCipher(StrText As String) As String
Call CriptSetKey
DecriptFromCipher = Blowfish_StringDec(StrText)
End Function

Public Function EncriptToHex(StrText As String) As String
EncriptToHex = Convert_HexFromString(StrText)
End Function

Public Function DecriptFromHex(StrText As String) As String
DecriptFromHex = Convert_StringFromHex(StrText)
End Function

Function Encript(StrText As String) As String
Encript = EncriptToHex(Blowfish_StringEnc(StrText))
End Function

Public Function Decript(StrText As String) As String
Decript = Blowfish_StringDec(DecriptFromHex(StrText))
End Function

Public Function HexFromByte(ByVal X) As String
X = X And &HFF
If X < 16 Then
HexFromByte = “0” & Hex(X)
Else
HexFromByte = Hex(X)
End If
End Function

Public Function CriptSetKey()
StrCleanTextKey = App.EXEName & " - " & App.ProductName
aKey() = Convert_BytesFromHex(StrCleanTextKey)
HexaKey = Convert_HexFromBytes(aKey())
Call Blowfish_KeyInit(aKey)
End Function

Public Function UnicodeWord_ShiftLeftBy8(wordX As Long) As Long
UnicodeWord_ShiftLeftBy8 = (wordX And &H7FFFFF) * &H100
If (wordX And &H800000) <> 0 Then
UnicodeWord_ShiftLeftBy8 = UnicodeWord_ShiftLeftBy8 Or &H80000000
End If
End Function

Public Sub UnicodeWord_Split(ByVal w As Long, a As Byte, b As Byte, C As Byte, d As Byte)
a = CByte(((w And &HFF000000) \ &H1000000) And &HFF)
b = CByte(((w And &HFF0000) \ &H10000) And &HFF)
C = CByte(((w And &HFF00) \ &H100) And &HFF)
d = CByte((w And &HFF) And &HFF)
End Sub

Public Function UnicodeWord_WordAdd(wordA As Long, wordB As Long) As Long
Dim myUnsigned As Double
myUnsigned = LongToUnsigned(wordA) + LongToUnsigned(wordB)
If myUnsigned > OFFSET_4 Then
myUnsigned = myUnsigned - OFFSET_4
End If
UnicodeWord_WordAdd = UnsignedToLong(myUnsigned)
End Function

Public Function UnicodeWord_Join(a As Byte, b As Byte, C As Byte, d As Byte) As Long
UnicodeWord_Join = ((a And &H7F) * &H1000000) Or (b * &H10000) Or (CLng© * &H100) Or d
If a And &H80 Then
UnicodeWord_Join = UnicodeWord_Join Or &H80000000
End If
End Function

'****************************************************
’ These two functions from Microsoft Article Q189323
’ “HOWTO: convert between Signed and Unsigned Numbers”
Public Function UnsignedToLong(Value As Double) As Long
If Value < 0 Or Value >= OFFSET_4 Then Error 6 ’ Overflow
If Value <= MAXINT_4 Then
UnsignedToLong = Value
Else
UnsignedToLong = Value - OFFSET_4
End If
End Function

Public Function LongToUnsigned(Value As Long) As Double
If Value < 0 Then
LongToUnsigned = Value + OFFSET_4
Else
LongToUnsigned = Value
End If
End Function
’ End of Microsoft-article functions
'****************************************************

Java

import javax.crypto.;
import javax.crypto.spec.
;
import java.io.*;

public class TESTE {
public static void main(String[] args){
byte[] encrypted = null;
SecretKeySpec skeySpec=null;
try{

     KeyGenerator kgen = KeyGenerator.getInstance("Blowfish");
     SecretKey skey = kgen.generateKey();
      byte[] raw = skey.getEncoded();
      skeySpec = new SecretKeySpec(raw, "Blowfish");
      Cipher cipher = Cipher.getInstance("Blowfish");
      cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
      encrypted = cipher.doFinal("oi".getBytes());
      System.out.println(encrypted.toString());
  
}catch(Exception e){
      e.printStackTrace();
}finally{
    try{
      byte[] desencrypted= null;
      KeyGenerator kgen = KeyGenerator.getInstance("Blowfish");
      SecretKey skey = kgen.generateKey();
      byte[] raw = skey.getEncoded();
      //SecretKeySpec skeySpec = new SecretKeySpec(raw, "Blowfish");
      Cipher cipher = Cipher.getInstance("Blowfish");
      cipher.init(Cipher.DECRYPT_MODE, skeySpec);
      if(encrypted!=null){
         desencrypted =cipher.doFinal(encrypted);
      }
      System.out.println(new String(desencrypted, "UTF-8"));
   }catch(Exception e){
      e.printStackTrace();
              
   }

}
}
}

Fico no aguardo

[]´s

Procure por bouncycastle, uma API de criptografia em Java excelente…

Ele implementa o algoritmo Blowfish, além de vários outros. No caso, utilizei para desenvolver um sistema que utilizava documentos digitais (X509), porém tenho certeza que ele fornece suporte ao Blowfish (li na documentação).

Tá aí o site… www.bouncycastle.org.

Ps: use o code /code

SecretKey skey = kgen.generateKey();

Isto gera uma nova chave aleatória cada vez que é chamada - vocë não pode usar essa chamada!
Vocë precisa ver no tal código VB como é que a tal chave é gerada.

Ola amigos
SecretKey skey = kgen.generateKey(); como eu gero isso na mao ?
[]´s