Blowfish does not work

New to FreeBASIC? Post your questions here.
Post Reply
gerry
Posts: 70
Joined: Oct 04, 2021 7:29

Blowfish does not work

Post by gerry »

Hello, blowfish_decrypt doesn't work, how do I fix it?

Code: Select all

#Include "BlowFish.bi"

Open "test.txt" For Binary As #1
Open "test.enc.txt" For Binary As #2

Dim As UInteger  x,xl,xr,ctr
Dim As UInteger i,length,should,nbytes,i2
Dim As UByte sapp,eapp
sapp=&h80
eapp=&h0
ctr=0
Dim ctx As blowfish_ctx

length=Lof(1)
Put #1,length+1,sapp
length=Lof(1)
If (length Mod 4)<>0 Then
   should=(int(length/4+1))*4
   nbytes=should-length
   For i=1 To nbytes
   length+=1
   Put #1,length,eapp
Next
EndIf'/
length=Lof(1)
blowfish_init(ctx,"psygate")

i=0
i2=0
While i<=length-4
   Get #1,i,xl
   i+=4
   Get #1,i,xr
   i+=4
   blowfish_encrypt(ctx,xl,xr)
   Put #2,i2,xl
   i2+=4
   Put #2,i2,xr
   i2+=4
Wend
Print Lof(1)
Print Lof(2)
sleep

Code: Select all

#Define round_nr 16

Type blowfish_ctx
   Dim As UInteger p(18)
   Dim As UInteger s(4,256)
End Type

Declare Function orig_p(i As UInteger) As UInteger
Declare Function orig_s(i As UInteger,j As UInteger) As UInteger
Declare Function F(ByRef ctx As blowfish_ctx,x As UInteger) As UInteger
Declare Function Blowfish_Encrypt(ByRef ctx As blowfish_ctx,ByRef xl As UInteger, ByRef xr As UInteger) As UInteger
Declare Function Blowfish_Decrypt(ByRef ctx As blowfish_ctx,ByRef xl1 As UInteger, ByRef xr1 As UInteger) As UInteger
Declare Function blowfish_init(ByRef ctx As blowfish_ctx,ekey As String) As UInteger
Declare Function blowfish_selftest() As UInteger
Declare Function hextokey(inpt As ULongInt) As String

Function blowfish_selftest() As UInteger
   Dim As String ekey,chkstr
   Dim As UInteger x,y,e,chk=1
   Dim ctx As blowfish_ctx
   x=&hffffffff
   y=x
   ekey=hextokey(&hFFFFFFFFFFFFFFFF)
   blowfish_init(ctx,ekey)
   blowfish_encrypt(ctx,x,y)
   chkstr=Str(Hex(x))+Str(Hex(y))
   If chkstr<>"51866FD5B85ECB8A" Then chk=0
   
   x=0
   y=x
   ekey=hextokey(0)
   blowfish_init(ctx,ekey)
   Blowfish_Encrypt(ctx,x,y)
   chkstr=Str(Hex(x))+Str(Hex(y))
   If chkstr<>"4EF997456198DD78" Then chk=0
   
   Return chk
End Function

Function hextokey(inpt As ULongInt) As String
   Dim As String t,b
   Dim As Integer i,q,v
   
   For i=0 To 56 Step 8
      q=(inpt Shr i) And &hff
      b+=Chr(q)
   Next
   
   Return b
End Function

Function F(ByRef ctx As blowfish_ctx,x As UInteger) As UInteger
   Dim As UInteger a,b,c,d
   Dim As UInteger y
   
   d=(x And &hff)
   c=((x Shr 8) And &hff)
   b=((x Shr 16) And &hff)
   a=((x Shr 24) And &hff)
   
   y=ctx.s(0,a) + ctx.s(1,b)
   y=y Xor ctx.s(2,c)
   y=y + ctx.s(3,d)
   
   Return y
End Function

Function Blowfish_Encrypt(ByRef ctx As blowfish_ctx,ByRef xl1 As UInteger, ByRef xr1 As UInteger) As UInteger
   Dim As UInteger xl,xr,temp,i
   
   xl=xl1
   xr=xr1
   
   For i=0 To round_nr-1
      xl=xl Xor ctx.p(i)
      xr=F(ctx,xl) Xor xr
      
      temp=xl
      xl=xr
      xr=temp
   Next
   
   temp=xl
   xl=xr
   xr=temp
   
   xr=xr Xor ctx.p(round_nr)
   xl=xl Xor ctx.p(round_nr+1)
   
   xl1=xl
   xr1=xr
End Function


Function Blowfish_Decrypt(ByRef ctx As blowfish_ctx,ByRef xl1 As UInteger, ByRef xr1 As UInteger) As UInteger
   Dim As UInteger xr,xl,temp,i
   xl=xl1
   xr=xr1
   
   For i=round_nr+1 To 2 Step -1
      xl=xl Xor ctx.p(i)
      xr=F(ctx,xl) Xor xr
      
      temp=xl
      xl=xr
      xr=temp
   Next
   
   temp=xl
   xl=xr
   xr=temp
   xr=xr Xor ctx.p(1)
   xl=xl Xor ctx.p(0)
   
   xl1=xl
   xr1=xr
End Function

Function blowfish_init(ByRef ctx As blowfish_ctx,ekey As String) As UInteger
   Dim As UInteger i,j,k
   Dim As UInteger edata,ldata,rdata,keylen
   keylen=Len(ekey)
   For i=0 To 3
      For j=0 To 255
         ctx.s(i,j)=orig_s(i,j)
      Next
   Next
   
   j=0
   
   For i=0 To round_nr+1
      edata=&h00000000
      For k=0 To 3
         edata=(edata Shl 8) Or ekey[j]
         j+=1
         If j=keylen Then j=0
      Next
      ctx.p(i)=orig_p(i) Xor edata
   Next
   
   ldata=&h00000000
   rdata=ldata
   
   For i=0 To round_nr+1 Step 2
      Blowfish_Encrypt(ctx,ldata,rdata)
      ctx.p(i)=ldata
      ctx.p(i+1)=rdata
   Next
   
   For i=0 To 3
      For j=0 To 255 Step 2
         Blowfish_Encrypt(ctx,ldata,rdata)
         ctx.s(i,j)=ldata
         ctx.s(i,j+1)=rdata
      Next
   Next
   
   Return 0
   
End Function

Function orig_p(i As UInteger) As UInteger
   Dim As UInteger p(18)={&h243F6A88, &h85A308D3, &h13198A2E, &h03707344, _
                           &hA4093822, &h299F31D0, &h082EFA98, &hEC4E6C89, _
                           &h452821E6, &h38D01377, &hBE5466CF, &h34E90C6C, _
                           &hC0AC29B7, &hC97C50DD, &h3F84D5B5, &hB5470917, _
                           &h9216D5D9, &h8979FB1B}
   Return p(i)
End Function


Function orig_s(i As UInteger,j As UInteger) As UInteger
   Dim As UInteger s1(256)={&hD1310BA6, &h98DFB5AC, &h2FFD72DB, &hD01ADFB7, _
                                  &hB8E1AFED, &h6A267E96, &hBA7C9045, &hF12C7F99, _
        &h24A19947, &hB3916CF7, &h0801F2E2, &h858EFC16, _
        &h636920D8, &h71574E69, &hA458FEA3, &hF4933D7E, _
        &h0D95748F, &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, _
        &hEF845D5D, &hE98575B1, &hDC262302, &hEB651B88, _
        &h23893E81, &hD396ACC5, &h0F6D6FF3, &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, _
        &h075372C9, &h80991B7B, &h25D479D8, &hF6E8DEF7, _
        &hE3FE501A, &hB6794C3B, &h976CE0BD, &h04C006BA, _
        &hC1A94FB6, &h409F60C4, &h5E5C9EC2, &h196A2463, _
        &h68FB6FAF, &h3E6C53B5, &h1339B2EB, &h3B52EC6F, _
        &h6DFC511F, &h9B30952C, &hCC814544, &hAF5EBD09, _
        &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, _
        &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, _
        &h00250E2D, &h2071B35E, &h226800BB, &h57B8E0AF, _
        &h2464369B, &hF009B91E, &h5563911D, &h59DFA6AA, _
        &h78C14389, &hD95A537F, &h207D5BA2, &h02E5B9C5, _
        &h83260376, &h6295CFA9, &h11C81968, &h4E734A41, _
        &hB3472DCA, &h7B14A94A, &h1B510052, &h9A532915, _
        &hD60F573F, &hBC9BC6E4, &h2B60A476, &h81E67400, _
        &h08BA6FB5, &h571BE91F, &hF296EC6B, &h2A0DD915, _
        &hB6636521, &hE7B9F9B6, &hFF34052E, &hC5855664, _
        &h53B02D5D, &hA99F8FA1, &h08BA4799, &h6E85076A   }

Dim As UInteger s2(256)={   &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, &h021ECC5E, _
        &h09686B3F, &h3EBAEFC9, &h3C971814, &h6B6A70A1, _
        &h687F3584, &h52A0E286, &hB79C5305, &hAA500737, _
        &h3E07841C, &h7FDEAE5C, &h8E7D44EC, &h5716F2B8, _
        &hB03ADA37, &hF0500C0D, &hF01C1F04, &h0200B3FF, _
        &hAE0CF51A, &h3CB574B2, &h25837A58, &hDC0921BD, _
        &hD19113F9, &h7CA92FF6, &h94324773, &h22F54701, _
        &h3AE5E581, &h37C2DADC, &hC8B57634, &h9AF3DDA7, _
        &hA9446146, &h0FD0030E, &hECC8C73E, &hA4751E41, _
        &hE238CD99, &h3BEA0E2F, &h3280BBA1, &h183EB331, _
        &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, _
        &h043556F1, &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, _
        &h5223A708, &hF71312B6, &hEBADFE6E, &hEAC31F66, _
        &hE3BC4595, &hA67BC883, &hB17F37D1, &h018CFF28, _
        &hC332DDEF, &hBE6C5AA5, &h65582185, &h68AB9802, _
        &hEECEA50F, &hDB2F953B, &h2AEF7DAD, &h5B6E2F84, _
        &h1521B628, &h29076170, &hECDD4775, &h619F1510, _
        &h13CCA830, &hEB61BD96, &h0334FE1E, &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, _
        &h0E358829, &hC7E61FD6, &h96DEDFA1, &h7858BA99, _
        &h57F584A5, &h1B227263, &h9B83C3FF, &h1AC24696, _
        &hCDB30AEB, &h532E3054, &h8FD948E4, &h6DBC3128, _
        &h58EBF2EF, &h34C6FFEA, &hFE28ED61, &hEE7C3C73, _
        &h5D4A14D9, &hE864B7E3, &h42105D14, &h203E13E0, _
        &h45EEE2B6, &hA3AAABEA, &hDB6C4F15, &hFACB4FD0, _
        &hC742F442, &hEF6ABBB5, &h654F3B1D, &h41CD2105, _
        &hD81E799E, &h86854DC7, &hE44B476A, &h3D816250, _
        &hCF62A1F2, &h5B8D2646, &hFC8883A0, &hC1C7B6A3, _
        &h7F1524C3, &h69CB7492, &h47848A0B, &h5692B285, _
        &h095BBF00, &hAD19489D, &h1462B174, &h23820E00, _
        &h58428D2A, &h0C55F5EA, &h1DADF43E, &h233F7061, _
        &h3372F092, &h8D937E41, &hD65FECF1, &h6C223BDB, _
        &h7CDE3759, &hCBEE7460, &h4085F2A7, &hCE77326E, _
        &hA6078084, &h19F8509E, &hE8EFD855, &h61D99735, _
        &hA969A7AA, &hC50C06C2, &h5A04ABFC, &h800BCADC, _
        &h9E447A2E, &hC3453484, &hFDD56705, &h0E1E9EC9, _
        &hDB73DBD3, &h105588CD, &h675FDA79, &hE3674340, _
        &hC5C43465, &h713E38D8, &h3D28F89E, &hF16DFF20, _
        &h153E21E7, &h8FB03D4A, &hE6E39F2B, &hDB83ADF7}               

Dim As UInteger s3(256)={   &hE93D5A68, &h948140F7, &hF64C261C, &h94692934, _
        &h411520F7, &h7602D4F7, &hBCF46B2E, &hD4A20068, _
        &hD4082471, &h3320F46A, &h43B7D4B7, &h500061AF, _
        &h1E39F62E, &h97244546, &h14214F74, &hBF8B8840, _
        &h4D95FC1D, &h96B591AF, &h70F4DDD3, &h66A02F45, _
        &hBFBC09EC, &h03BD9785, &h7FAC6DD0, &h31CB8504, _
        &h96EB27B3, &h55FD3941, &hDA2547E6, &hABCA0A9A, _
        &h28507825, &h530429F4, &h0A2C86DA, &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, _
        &h55A867BC, &hA1159A58, &hCCA92963, &h99E1DB33, _
        &hA62A4A56, &h3F3125F9, &h5EF47E1C, &h9029317C, _
        &hFDF8E802, &h04272F70, &h80BB155C, &h05282CE3, _
        &h95C11548, &hE4C66D22, &h48C1133F, &hC70F86DC, _
        &h07F9C9EE, &h41041F0F, &h404779A4, &h5D886E17, _
        &h325F51EB, &hD59BC0D1, &hF2BCC18F, &h41113564, _
        &h257B7834, &h602A9C60, &hDFF8E8A3, &h1F636C1B, _
        &h0E12B4C2, &h02E1329E, &hAF664FD1, &hCAD18115, _
        &h6B2395E0, &h333E92E1, &h3B240B62, &hEEBEB922, _
        &h85B2A20E, &hE6BA0D99, &hDE720C8C, &h2DA2F728, _
        &hD0127845, &h95B794FD, &h647D0862, &hE7CCF5F0, _
        &h5449A36F, &h877D48FA, &hC39DFD27, &hF33E8D1E, _
        &h0A476341, &h992EFF74, &h3A6F6EAB, &hF4F8FD37, _
        &hA812DC60, &hA1EBDDF8, &h991BE14C, &hDB6E6B0D, _
        &hC67B5510, &h6D672C37, &h2765D43B, &hDCD0E804, _
        &hF1290DC7, &hCC00FFA3, &hB5390F92, &h690FED0B, _
        &h667B9FFB, &hCEDB7D9C, &hA091CF0B, &hD9155EA3, _
        &hBB132F88, &h515BAD24, &h7B9479BF, &h763BD6EB, _
        &h37392EB3, &hCC115979, &h8026E297, &hF42E312D, _
        &h6842ADA7, &hC66A2B3B, &h12754CCC, &h782EF11C,  _
        &h6A124237, &hB79251E7, &h06A1BBE6, &h4BFB6350, _
        &h1A6B1018, &h11CAEDFA, &h3D25BDD8, &hE2E1C3C9, _
        &h44421659, &h0A121386, &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, _
        &hB90BACE1, &hBB8205D0, &h11A86248, &h7574A99E, _
        &hB77F19B6, &hE0A9DC09, &h662D09A1, &hC4324633, _
        &hE85A1F02, &h09F0BE8C, &h4A99A025, &h1D6EFE10, _
        &h1AB93D1D, &h0BA5A4DF, &hA186F20F, &h2868F169, _
        &hDCB7DA83, &h573906FE, &hA1E2CE9B, &h4FCD7F52, _
        &h50115E01, &hA70683FA, &hA002B5C4, &h0DE6D027, _
        &h9AF88C27, &h773F8641, &hC3604C06, &h61A806B5, _
        &hF0177A28, &hC0F586E0, &h006058AA, &h30DC7D62, _
        &h11E69ED7, &h2338EA63, &h53C2DD94, &hC2C21634, _
        &hBBCBEE56, &h90BCB6DE, &hEBFC7DA1, &hCE591D76, _
        &h6F05E409, &h4B7C0188, &h39720A3D, &h7C927C24, _
        &h86E3725F, &h724D9DB9, &h1AC15BB4, &hD39EB8FC, _
        &hED545578, &h08FCA5B5, &hD83D7CD3, &h4DAD0FC4, _
        &h1E50EF5E, &hB161E6F8, &hA28514D9, &h6C51133C, _
        &h6FD5C7E7, &h56E14EC4, &h362ABFCE, &hDDC6C837, _
        &hD79A3234, &h92638212, &h670EFA8E, &h406000E0  }

Dim As UInteger s4(256)={   &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, &h022B8B51, _
        &h96D5AC3A, &h017DA67D, &hD1CF3ED6, &h7C7D2D28, _
        &h1F9F25CF, &hADF2B89B, &h5AD6B472, &h5A88F54C, _
        &hE029AC71, &hE019A5E6, &h47B0ACFD, &hED93FA9B, _
        &hE8D3C48D, &h283B57CC, &hF8D56629, &h79132E28, _
        &h785F0191, &hED756055, &hF7960E44, &hE3D35E8C, _
        &h15056DD4, &h88F46DBA, &h03A16125, &h0564F0BD, _
        &hC3EB9E15, &h3C9057A2, &h97271AEC, &hA93A072A, _
        &h1B3F6D9B, &h1E6321F5, &hF59C66FB, &h26DCF319, _
        &h7533D928, &hB155FDF5, &h03563482, &h8ABA3CBB, _
        &h28517711, &hC20AD9F8, &hABCC5167, &hCCAD925F, _
        &h4DE81751, &h3830DC8E, &h379D5862, &h9320F991, _
        &hEA7A90C2, &hFB3E7BCE, &h5121CE64, &h774FBE32, _
        &hA8B6E37E, &hC3293D46, &h48DE5369, &h6413E680, _
        &hA2AE0810, &hDD6DB224, &h69852DFD, &h09072166, _ _
        &hB39A460A, &h6445C0DD, &h586CDECF, &h1C20C8AE, _
        &h5BBEF7DD, &h1B588D40, &hCCD2017F, &h6BB4E3BB, _
        &hDDA26A7E, &h3A59FF45, &h3E350A44, &hBCB4CDD5, _
        &h72EACEA8, &hFA6484BB, &h8D6612AE, &hBF3C6F47, _
        &hD29BE463, &h542F5D9E, &hAEC2771B, &hF64E6370, _
        &h740E0D8D, &hE75B1357, &hF8721671, &hAF537D5D, _
        &h4040CB08, &h4EB4E2CC, &h34D2466A, &h0115AF84, _
        &hE1B00428, &h95983A1D, &h06B89FB4, &hCE6EA048, _
        &h6F3F3B82, &h3520AB82, &h011A1D4B, &h277227F8, _
        &h611560B1, &hE7933FDC, &hBB3A792B, &h344525BD, _
        &hA08839E1, &h51CE794B, &h2F32C9B7, &hA01FBAC9, _
        &hE01CC87E, &hBCC7D1F6, &hCF0111C3, &hA1E8AAC7, _
        &h1A908749, &hD44FBD9A, &hD0DADECB, &hD50ADA38, _
        &h0339C32A, &hC6913667, &h8DF9317C, &hE0B12B4F, _
        &hF79E59B7, &h43F5BB3A, &hF2D519FF, &h27D9459C, _
        &hBF97222C, &h15E6FC2A, &h0F91FC71, &h9B941525, _
        &hFAE59361, &hCEB69CEB, &hC2A86459, &h12BAA8D1, _
        &hB6C1075E, &hE3056A0C, &h10D25065, &hCB03A442, _
        &hE0EC6E0E, &h1698DB3B, &h4C98A0BE, &h3278E964, _
        &h9F1F9532, &hE0D392DF, &hD3A0342B, &h8971F21E, _
        &h1B0A7441, &h4BA3348C, &hC5BE7120, &hC37632D8, _
        &hDF359F8D, &h9B992F2E, &hE60B6F47, &h0FE3F11D, _
        &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, &h02FB8A8C, &h01C36AE4, &hD6EBE1F9, _
        &h90D4F869, &hA65CDEA0, &h3F09252D, &hC208E69F, _
        &hB74E6132, &hCE77E25B, &h578FDFE3, &h3AC372E6  }

   If i=0 Then
      Return s1(j)
   ElseIf i=1 Then
      Return s2(j)
   ElseIf i=2 Then
      Return s3(j)
   ElseIf i=3 Then
      Return s4(j)
   EndIf
End Function
TJF
Posts: 3809
Joined: Dec 06, 2009 22:27
Location: N47°, E15°
Contact:

Re: Blowfish does not work

Post by TJF »

Did you try closing the files #1 and #2 before evaluating the result?
gerry
Posts: 70
Joined: Oct 04, 2021 7:29

Re: Blowfish does not work

Post by gerry »

TJF wrote:Did you try closing the files #1 and #2 before evaluating the result?
yes
counting_pine
Site Admin
Posts: 6323
Joined: Jul 05, 2005 17:32
Location: Manchester, Lancs

Re: Blowfish does not work

Post by counting_pine »

Where has the code come from?
Does it work if you replace Uinteger with Ulong?
srvaldez
Posts: 3382
Joined: Sep 25, 2005 21:54

Re: Blowfish does not work

Post by srvaldez »

it possibly came from viewtopic.php?p=120264#p120264
in that post the functions Blowfish_Encrypt and Blowfish_Decrypt should be sub's and not functions
but just a few posts above that viewtopic.php?p=119960#p119960 you have this

Code: Select all

'Blowfish Algorithm

'Modified version of http://www.freebasic.net/forum/viewtopic.php?t=6243
'implementing CBC mode and improving ease of use.

Const ROUNDS = 16

Dim Shared pAr(ROUNDS + 1) As Uinteger
Dim Shared sAr(3,255) As Uinteger

Sub Initialize()
    Dim ct As Integer
    For ct=0 To 17
        Read pAr(ct)
    Next ct
    For ct = 0 To 255
      Read sAr(0, ct)
    Next ct
    For ct = 0 To 255
      Read sAr(1, ct)
    Next ct
    For ct = 0 To 255
      Read sAr(2, ct)
    Next ct
    For ct = 0 To 255
      Read sAr(3, ct)
    Next ct       
End Sub

Function bfF (xL As Uinteger) As Uinteger
    Dim a As Uinteger
    Dim b As Uinteger
    Dim c As Uinteger
    Dim d As Uinteger
    d = xL And &H000000FF
    c = (xL Shr 8) And &H0000FF
    b = (xL Shr 16) And &H00FF
    a = (xL Shr 24) And &HFF
    Dim temp As Uinteger
    temp = (sAr(0, a) + sAr(1, b))
    temp = temp Xor sAr(2, c)
    temp = (temp + sAr(3, d))
    bfF = temp
End Function

Dim Shared tempinp1 As Uinteger
Dim Shared tempinp2 As Uinteger
Dim Shared tempinp As Uinteger
tempinp1 = &H00000000
tempinp2 = &H00000000

Sub Encrypt()
    Dim i As Integer
    For i=0 To 15
        tempinp1 = tempinp1 Xor pAr(i)
        tempinp2 = tempinp2 Xor bfF(tempinp1)
        tempinp = tempinp1
        tempinp1 = tempinp2
        tempinp2 = tempinp
    Next i
    tempinp = tempinp1
    tempinp1 = tempinp2
    tempinp2 = tempinp
    tempinp2 = tempinp2 Xor pAr(16)
    tempinp1 = tempinp1 Xor pAr(17)
End Sub

Sub Decrypt()
    Dim i As Integer
    For i=17 To 2 Step -1
        tempinp1 = tempinp1 Xor pAr(i)
        tempinp2 = tempinp2 Xor bfF(tempinp1)
        tempinp = tempinp1
        tempinp1 = tempinp2
        tempinp2 = tempinp
    Next i
    tempinp = tempinp1
    tempinp1 = tempinp2
    tempinp2 = tempinp
    tempinp2 = tempinp2 Xor pAr(1)
    tempinp1 = tempinp1 Xor pAr(0)
End Sub   

Data &H243F6A88, &H85A308D3, &H13198A2E, &H3707344, _
&HA4093822, &H299F31D0, &H82EFA98, &HEC4E6C89, _
&H452821E6, &H38D01377, &HBE5466CF, &H34E90C6C, _
&HC0AC29B7, &HC97C50DD, &H3F84D5B5, &HB5470917, _
&H9216D5D9, &H8979FB1B

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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


Function AsciiToHex(byref text As String) As String
    Dim As String hexout
    For i As Integer = 0 To Len(text)-1
        hexout += Hex(text[i],2)
    Next i
    Return hexout
End Function

Function HexToAscii(byval text As String) As String
    Dim As String ascii = space(len(text)/2)
    For i As Integer = 0 to len(text)/2-1
        ascii[i] = valint("&h"+Mid(text,2*i+1,2))
    Next i
    Return ascii
End Function

Sub SetupKey(byref password As String)
    Restore
    Initialize()
   
    tempinp1 = &H00000000
    tempinp2 = &H00000000

    Dim As Integer i,j
    Dim as string passwordkey
    Dim as integer k
   
    Dim keyl As Integer
   
    passwordkey = password
    keyl = len(passwordkey) \ 4
   
    if (len(passwordkey) mod 4) <> 0 then
        keyl += 1
        passwordkey = passwordkey + chr(0,0,0,0)
    end if

    If keyl > 14 then keyl = 14
   
    redim Key(keyl) As Uinteger
   
    Dim As String KeyString = AsciiToHex(passwordkey)
   
    for k = 0 to keyl-1
        Key(k) = val("&h"+Mid(KeyString,k*8+1,8))
    next

    For i=0 To 17
        pAr(i) = pAr(i) Xor Key(i Mod keyl)
    Next i

    Encrypt
    pAr(0) = tempinp1
    pAr(1) = tempinp2
   
    For i=1 To 8
        Encrypt
        pAr(2*i) = tempinp1
        pAr(2*i+1) = tempinp2
    Next i
   
    For j = 0 To 3
        For i = 0 To 127
            Encrypt
            sAr(j,2*i) = tempinp1
            sAr(j,2*i+1) = tempinp2
        Next i
    Next j
End Sub

Function EncryptBlock(byref text As String) As String
   
    Dim CipherText As String
   
    Dim As String TextString = AsciiToHex(text)
   
    tempinp1 = val("&h"+Left(TextString,8))
    tempinp2 = val("&h"+Right(TextString,8))
    Encrypt
   
    CipherText = hex(tempinp1,8) + hex(tempinp2,8)
   
    Return CipherText
   
End Function

Function DecryptBlock(byref text As String) As String
   
    Dim As String PlainText   
           
    tempinp1 = valint("&h"+Left(text,8))
    tempinp2 = valint("&h"+Right(text,8))
    Decrypt

    PlainText = HexToAscii(Hex(tempinp1,8)) + HexToAscii(Hex(tempinp2,8))
   
    Return PlainText
       
End Function

Function EncryptCBC(byref text As String, byref IV As String) As String
   
    Dim As Integer Padding = 8-(len(text) Mod 8)
    Dim As String Plain = text

    For i As Integer = 1 to Padding
        Plain += chr(0) 'This is the padding method used for the test vecotrs.
                        'It is perhaps better to use chr(Padding), so that the
                        'padding chars can easily be removed in decryption.
                        'It is used in EncryptECB as an example.
    Next i
   
    Dim As String CipherText
    Dim As String PlainBlock(int(len(Plain)/8))
    Dim as String Block
    Dim As String Feedback = IV
   
    For i As Integer = 1 to UBound(PlainBlock)
        PlainBlock(i) = Mid(Plain,(i-1)*8+1,8)
    Next i

    For i As Integer = 1 to UBound(PlainBlock)
       
        For j As Integer = 0 to 7
            PlainBlock(i)[j] = PlainBlock(i)[j] XOR FeedBack[j]
        Next j
        Block = EncryptBlock(PlainBlock(i))
        CipherText += Block
        Feedback = HexToAscii(Block)
       
    Next i
   
    Return AsciiToHex(IV)+CipherText
    'Return the IV as the first block of the ciphertext.
   
End Function

Function DecryptCBC(byref text As String) As String
    Dim As String IV = HexToAscii(Left(text,16))
   
    Dim As String Cipher = Right(text,len(text)-16)
   
    Dim As String PlainText
    Dim As String CipherBlock(int(len(Cipher)/16))
    Dim as String Block
    Dim As String Feedback = IV
   
    For i As Integer = 1 to UBound(CipherBlock)
        CipherBlock(i) = Mid(Cipher,(i-1)*16+1,16)
    Next i
   
    For i As Integer = 1 to Ubound(CipherBlock)
        Block = DecryptBlock(CipherBlock(i))
        For j As Integer = 0 to 7
            Block[j] = Block[j] XOR FeedBack[j]
        Next j
        PlainText += Block
        Feedback = HexToAscii(CipherBlock(i))
    Next i
   
    'PlainText = Left(PlainText,len(Plaintext)-Plaintext[len(Plaintext)-1])
    'Un-comment the line above if using the chr(Padding) padding scheme; this
    'removes the padding characters from the plaintext.
   
    Return PlainText
   
End Function

Function EncryptECB(byref text As String) As String
   
    Dim As Integer Padding = 8-(len(text) Mod 8)
    Dim As String Plain = text

    For i As Integer = 1 to Padding
        Plain += chr(Padding)
    Next i
   
    Dim As String CipherText
    Dim As String PlainBlock(int(len(Plain)/8))
    Dim as String Block
   
    For i As Integer = 1 to UBound(PlainBlock)
        PlainBlock(i) = Mid(Plain,(i-1)*8+1,8)
    Next i

    For i As Integer = 1 to UBound(PlainBlock)
       
        Block = EncryptBlock(PlainBlock(i))
        CipherText += Block
       
    Next i
   
    Return CipherText
   
End Function

Function DecryptECB(byref text As String) As String
   
    Dim As String Cipher = text
   
    Dim As String PlainText
    Dim As String CipherBlock(int(len(Cipher)/16))
    Dim as String Block
   
    For i As Integer = 1 to UBound(CipherBlock)
        CipherBlock(i) = Mid(Cipher,(i-1)*16+1,16)
    Next i
   
    For i As Integer = 1 to Ubound(CipherBlock)
        Block = DecryptBlock(CipherBlock(i))
        PlainText += Block
    Next i
   
    PlainText = Left(PlainText,len(Plaintext)-Plaintext[len(Plaintext)-1])
   
    Return PlainText
   
End Function


'Test Vector information from http://www.schneier.com/code/vectors.txt

'ecb mode:
'key bytes               clear bytes             cipher bytes
'FEDCBA9876543210        FFFFFFFFFFFFFFFF        6B5C5A9C5D9E0A5A

'chaining mode test data
'key[16]   = 0123456789ABCDEFF0E1D2C3B4A59687
'iv[8]     = FEDCBA9876543210
'data[29]  = "7654321 Now is the time for " (includes trailing '\0')
'data[29]  = 37363534333231204E6F77206973207468652074696D6520666F722000
'cbc cipher text
'cipher[32]= 6B77B4D63006DEE605B156E27403979358DEB9E7154616D959F1652BD5FF92CC


Print "ECB Mode Test:"
Print "--------------------"
Print

SetupKey(HexToAscii("FEDCBA9876543210"))
Dim As String Encrypted = EncryptECB(HexToAscii("FFFFFFFFFFFFFFFF"))
Print Encrypted
'The ciphertext is automatically padded with 8 bytes, so comparing first 8 bytes:

Print
If Left(Encrypted,16) = "6B5C5A9C5D9E0A5A" then
    Print "Success!"
Else
    Print "Failure!"
End If


Print
Print "CBC Mode Test:"
Print "--------------------"
Print

Dim As String IV = HexToAscii("FEDCBA9876543210")
Dim As String KeyBytes = HexToAscii("0123456789ABCDEFF0E1D2C3B4A59687")
Dim As String ClearBytes = HexToAscii("37363534333231204E6F77206973207468652074696D6520666F722000")

SetupKey(KeyBytes)

Dim As String PlainText,CipherText
CipherText = EncryptCBC(ClearBytes,IV)
PlainText = DecryptCBC(CipherText)

Print CipherText 'Includes IV as first block
Print PlainText 'Note multiple trailing chr(0) from padding
Print

If CipherText = "FEDCBA9876543210"+"6B77B4D63006DEE605B156E27403979358DEB9E7154616D959F1652BD5FF92CC" then
    Print "Success!"
Else
    Print "Failure!"
End If

Sleep
gerry
Posts: 70
Joined: Oct 04, 2021 7:29

Re: Blowfish does not work

Post by gerry »

srvaldez wrote:it possibly came from viewtopic.php?p=120264#p120264
in that post the functions Blowfish_Encrypt and Blowfish_Decrypt should be sub's and not functions
but just a few posts above that viewtopic.php?p=119960#p119960 you have this

Code: Select all

'Blowfish Algorithm

'Modified version of http://www.freebasic.net/forum/viewtopic.php?t=6243
'implementing CBC mode and improving ease of use.

Const ROUNDS = 16

Dim Shared pAr(ROUNDS + 1) As Uinteger
Dim Shared sAr(3,255) As Uinteger

Sub Initialize()
    Dim ct As Integer
    For ct=0 To 17
        Read pAr(ct)
    Next ct
    For ct = 0 To 255
      Read sAr(0, ct)
    Next ct
    For ct = 0 To 255
      Read sAr(1, ct)
    Next ct
    For ct = 0 To 255
      Read sAr(2, ct)
    Next ct
    For ct = 0 To 255
      Read sAr(3, ct)
    Next ct       
End Sub

Function bfF (xL As Uinteger) As Uinteger
    Dim a As Uinteger
    Dim b As Uinteger
    Dim c As Uinteger
    Dim d As Uinteger
    d = xL And &H000000FF
    c = (xL Shr 8) And &H0000FF
    b = (xL Shr 16) And &H00FF
    a = (xL Shr 24) And &HFF
    Dim temp As Uinteger
    temp = (sAr(0, a) + sAr(1, b))
    temp = temp Xor sAr(2, c)
    temp = (temp + sAr(3, d))
    bfF = temp
End Function

Dim Shared tempinp1 As Uinteger
Dim Shared tempinp2 As Uinteger
Dim Shared tempinp As Uinteger
tempinp1 = &H00000000
tempinp2 = &H00000000

Sub Encrypt()
    Dim i As Integer
    For i=0 To 15
        tempinp1 = tempinp1 Xor pAr(i)
        tempinp2 = tempinp2 Xor bfF(tempinp1)
        tempinp = tempinp1
        tempinp1 = tempinp2
        tempinp2 = tempinp
    Next i
    tempinp = tempinp1
    tempinp1 = tempinp2
    tempinp2 = tempinp
    tempinp2 = tempinp2 Xor pAr(16)
    tempinp1 = tempinp1 Xor pAr(17)
End Sub

Sub Decrypt()
    Dim i As Integer
    For i=17 To 2 Step -1
        tempinp1 = tempinp1 Xor pAr(i)
        tempinp2 = tempinp2 Xor bfF(tempinp1)
        tempinp = tempinp1
        tempinp1 = tempinp2
        tempinp2 = tempinp
    Next i
    tempinp = tempinp1
    tempinp1 = tempinp2
    tempinp2 = tempinp
    tempinp2 = tempinp2 Xor pAr(1)
    tempinp1 = tempinp1 Xor pAr(0)
End Sub   

Data &H243F6A88, &H85A308D3, &H13198A2E, &H3707344, _
&HA4093822, &H299F31D0, &H82EFA98, &HEC4E6C89, _
&H452821E6, &H38D01377, &HBE5466CF, &H34E90C6C, _
&HC0AC29B7, &HC97C50DD, &H3F84D5B5, &HB5470917, _
&H9216D5D9, &H8979FB1B

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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

Data &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


Function AsciiToHex(byref text As String) As String
    Dim As String hexout
    For i As Integer = 0 To Len(text)-1
        hexout += Hex(text[i],2)
    Next i
    Return hexout
End Function

Function HexToAscii(byval text As String) As String
    Dim As String ascii = space(len(text)/2)
    For i As Integer = 0 to len(text)/2-1
        ascii[i] = valint("&h"+Mid(text,2*i+1,2))
    Next i
    Return ascii
End Function

Sub SetupKey(byref password As String)
    Restore
    Initialize()
   
    tempinp1 = &H00000000
    tempinp2 = &H00000000

    Dim As Integer i,j
    Dim as string passwordkey
    Dim as integer k
   
    Dim keyl As Integer
   
    passwordkey = password
    keyl = len(passwordkey) \ 4
   
    if (len(passwordkey) mod 4) <> 0 then
        keyl += 1
        passwordkey = passwordkey + chr(0,0,0,0)
    end if

    If keyl > 14 then keyl = 14
   
    redim Key(keyl) As Uinteger
   
    Dim As String KeyString = AsciiToHex(passwordkey)
   
    for k = 0 to keyl-1
        Key(k) = val("&h"+Mid(KeyString,k*8+1,8))
    next

    For i=0 To 17
        pAr(i) = pAr(i) Xor Key(i Mod keyl)
    Next i

    Encrypt
    pAr(0) = tempinp1
    pAr(1) = tempinp2
   
    For i=1 To 8
        Encrypt
        pAr(2*i) = tempinp1
        pAr(2*i+1) = tempinp2
    Next i
   
    For j = 0 To 3
        For i = 0 To 127
            Encrypt
            sAr(j,2*i) = tempinp1
            sAr(j,2*i+1) = tempinp2
        Next i
    Next j
End Sub

Function EncryptBlock(byref text As String) As String
   
    Dim CipherText As String
   
    Dim As String TextString = AsciiToHex(text)
   
    tempinp1 = val("&h"+Left(TextString,8))
    tempinp2 = val("&h"+Right(TextString,8))
    Encrypt
   
    CipherText = hex(tempinp1,8) + hex(tempinp2,8)
   
    Return CipherText
   
End Function

Function DecryptBlock(byref text As String) As String
   
    Dim As String PlainText   
           
    tempinp1 = valint("&h"+Left(text,8))
    tempinp2 = valint("&h"+Right(text,8))
    Decrypt

    PlainText = HexToAscii(Hex(tempinp1,8)) + HexToAscii(Hex(tempinp2,8))
   
    Return PlainText
       
End Function

Function EncryptCBC(byref text As String, byref IV As String) As String
   
    Dim As Integer Padding = 8-(len(text) Mod 8)
    Dim As String Plain = text

    For i As Integer = 1 to Padding
        Plain += chr(0) 'This is the padding method used for the test vecotrs.
                        'It is perhaps better to use chr(Padding), so that the
                        'padding chars can easily be removed in decryption.
                        'It is used in EncryptECB as an example.
    Next i
   
    Dim As String CipherText
    Dim As String PlainBlock(int(len(Plain)/8))
    Dim as String Block
    Dim As String Feedback = IV
   
    For i As Integer = 1 to UBound(PlainBlock)
        PlainBlock(i) = Mid(Plain,(i-1)*8+1,8)
    Next i

    For i As Integer = 1 to UBound(PlainBlock)
       
        For j As Integer = 0 to 7
            PlainBlock(i)[j] = PlainBlock(i)[j] XOR FeedBack[j]
        Next j
        Block = EncryptBlock(PlainBlock(i))
        CipherText += Block
        Feedback = HexToAscii(Block)
       
    Next i
   
    Return AsciiToHex(IV)+CipherText
    'Return the IV as the first block of the ciphertext.
   
End Function

Function DecryptCBC(byref text As String) As String
    Dim As String IV = HexToAscii(Left(text,16))
   
    Dim As String Cipher = Right(text,len(text)-16)
   
    Dim As String PlainText
    Dim As String CipherBlock(int(len(Cipher)/16))
    Dim as String Block
    Dim As String Feedback = IV
   
    For i As Integer = 1 to UBound(CipherBlock)
        CipherBlock(i) = Mid(Cipher,(i-1)*16+1,16)
    Next i
   
    For i As Integer = 1 to Ubound(CipherBlock)
        Block = DecryptBlock(CipherBlock(i))
        For j As Integer = 0 to 7
            Block[j] = Block[j] XOR FeedBack[j]
        Next j
        PlainText += Block
        Feedback = HexToAscii(CipherBlock(i))
    Next i
   
    'PlainText = Left(PlainText,len(Plaintext)-Plaintext[len(Plaintext)-1])
    'Un-comment the line above if using the chr(Padding) padding scheme; this
    'removes the padding characters from the plaintext.
   
    Return PlainText
   
End Function

Function EncryptECB(byref text As String) As String
   
    Dim As Integer Padding = 8-(len(text) Mod 8)
    Dim As String Plain = text

    For i As Integer = 1 to Padding
        Plain += chr(Padding)
    Next i
   
    Dim As String CipherText
    Dim As String PlainBlock(int(len(Plain)/8))
    Dim as String Block
   
    For i As Integer = 1 to UBound(PlainBlock)
        PlainBlock(i) = Mid(Plain,(i-1)*8+1,8)
    Next i

    For i As Integer = 1 to UBound(PlainBlock)
       
        Block = EncryptBlock(PlainBlock(i))
        CipherText += Block
       
    Next i
   
    Return CipherText
   
End Function

Function DecryptECB(byref text As String) As String
   
    Dim As String Cipher = text
   
    Dim As String PlainText
    Dim As String CipherBlock(int(len(Cipher)/16))
    Dim as String Block
   
    For i As Integer = 1 to UBound(CipherBlock)
        CipherBlock(i) = Mid(Cipher,(i-1)*16+1,16)
    Next i
   
    For i As Integer = 1 to Ubound(CipherBlock)
        Block = DecryptBlock(CipherBlock(i))
        PlainText += Block
    Next i
   
    PlainText = Left(PlainText,len(Plaintext)-Plaintext[len(Plaintext)-1])
   
    Return PlainText
   
End Function


'Test Vector information from http://www.schneier.com/code/vectors.txt

'ecb mode:
'key bytes               clear bytes             cipher bytes
'FEDCBA9876543210        FFFFFFFFFFFFFFFF        6B5C5A9C5D9E0A5A

'chaining mode test data
'key[16]   = 0123456789ABCDEFF0E1D2C3B4A59687
'iv[8]     = FEDCBA9876543210
'data[29]  = "7654321 Now is the time for " (includes trailing '\0')
'data[29]  = 37363534333231204E6F77206973207468652074696D6520666F722000
'cbc cipher text
'cipher[32]= 6B77B4D63006DEE605B156E27403979358DEB9E7154616D959F1652BD5FF92CC


Print "ECB Mode Test:"
Print "--------------------"
Print

SetupKey(HexToAscii("FEDCBA9876543210"))
Dim As String Encrypted = EncryptECB(HexToAscii("FFFFFFFFFFFFFFFF"))
Print Encrypted
'The ciphertext is automatically padded with 8 bytes, so comparing first 8 bytes:

Print
If Left(Encrypted,16) = "6B5C5A9C5D9E0A5A" then
    Print "Success!"
Else
    Print "Failure!"
End If


Print
Print "CBC Mode Test:"
Print "--------------------"
Print

Dim As String IV = HexToAscii("FEDCBA9876543210")
Dim As String KeyBytes = HexToAscii("0123456789ABCDEFF0E1D2C3B4A59687")
Dim As String ClearBytes = HexToAscii("37363534333231204E6F77206973207468652074696D6520666F722000")

SetupKey(KeyBytes)

Dim As String PlainText,CipherText
CipherText = EncryptCBC(ClearBytes,IV)
PlainText = DecryptCBC(CipherText)

Print CipherText 'Includes IV as first block
Print PlainText 'Note multiple trailing chr(0) from padding
Print

If CipherText = "FEDCBA9876543210"+"6B77B4D63006DEE605B156E27403979358DEB9E7154616D959F1652BD5FF92CC" then
    Print "Success!"
Else
    Print "Failure!"
End If

Sleep
But how do I use that in this man's example?
gerry
Posts: 70
Joined: Oct 04, 2021 7:29

Re: Blowfish does not work

Post by gerry »

counting_pine wrote:Where has the code come from?
Does it work if you replace Uinteger with Ulong?
not work
Post Reply