clstwofish.cls

来自「vb md5 des等8种算法的加解密源码」· CLS 代码 · 共 1,201 行 · 第 1/3 页

CLS
1,201
字号

  K = ROUND_SUBKEYS + 2 * ROUNDS - 1
  For R = 0 To ROUNDS - 1 Step 2
    If (m_RunningCompiled) Then
      t0 = Fe32(DWord(2), 0)
      t1 = Fe32(DWord(3), 3)
      t0 = t0 + t1
      DWord(1) = Rot1(DWord(1) Xor (t0 + t1 + sKey(K)))
      K = K - 1
      DWord(0) = Rot31(DWord(0)) Xor (t0 + sKey(K))
      K = K - 1
      t0 = Fe32(DWord(0), 0)
      t1 = Fe32(DWord(1), 3)
      t0 = t0 + t1
      DWord(3) = Rot1(DWord(3) Xor (t0 + t1 + sKey(K)))
      K = K - 1
      DWord(2) = Rot31(DWord(2)) Xor (t0 + sKey(K))
      K = K - 1
    Else
      t0 = Fe32(DWord(2), 0)
      t1 = Fe32(DWord(3), 3)
      t0 = UnsignedAdd(t0, t1)
      DWord(1) = Rot1(DWord(1) Xor (UnsignedAdd(UnsignedAdd(t0, t1), sKey(K))))
      K = K - 1
      DWord(0) = Rot31(DWord(0)) Xor (UnsignedAdd(t0, sKey(K)))
      K = K - 1
      t0 = Fe32(DWord(0), 0)
      t1 = Fe32(DWord(1), 3)
      t0 = UnsignedAdd(t0, t1)
      DWord(3) = Rot1(DWord(3) Xor (UnsignedAdd(UnsignedAdd(t0, t1), sKey(K))))
      K = K - 1
      DWord(2) = Rot31(DWord(2)) Xor (UnsignedAdd(t0, sKey(K)))
      K = K - 1
    End If
  Next
    
  DWord(0) = DWord(0) Xor sKey(INPUT_WHITEN)
  DWord(1) = DWord(1) Xor sKey(INPUT_WHITEN + 1)
  DWord(2) = DWord(2) Xor sKey(INPUT_WHITEN + 2)
  DWord(3) = DWord(3) Xor sKey(INPUT_WHITEN + 3)

End Sub
Private Static Function Rot1(Value As Long) As Long

  Dim Temp As Byte
  Dim x(0 To 3) As Byte
  
  Call CopyMem(x(0), Value, 4)
  
  Temp = x(0)
  x(0) = (x(0) \ 2) Or ((x(1) And 1) * 128)
  x(1) = (x(1) \ 2) Or ((x(2) And 1) * 128)
  x(2) = (x(2) \ 2) Or ((x(3) And 1) * 128)
  x(3) = (x(3) \ 2) Or ((Temp And 1) * 128)
  
  Call CopyMem(Rot1, x(0), 4)
  
End Function
Private Static Function Rot31(Value As Long) As Long

  Dim Temp As Byte
  Dim x(0 To 3) As Byte
  
  Call CopyMem(x(0), Value, 4)
  
  Temp = x(3)
  x(3) = ((x(3) And 127) * 2) Or -CBool(x(2) And 128)
  x(2) = ((x(2) And 127) * 2) Or -CBool(x(1) And 128)
  x(1) = ((x(1) And 127) * 2) Or -CBool(x(0) And 128)
  x(0) = ((x(0) And 127) * 2) Or -CBool(Temp And 128)
  
  Call CopyMem(Rot31, x(0), 4)
  
End Function

Private Sub Class_Initialize()
  
  Dim i As Long
  Dim j As Long
  Dim m1(0 To 1) As Long
  Dim mX(0 To 1) As Long
  Dim mY(0 To 1) As Long
  
  'We need to check if we are running in compiled
  '(EXE) mode or in the IDE, this will allow us to
  'use optimized code with unsigned integers in
  'compiled mode without any overflow errors when
  'running the code in the IDE
  On Local Error Resume Next
  m_RunningCompiled = ((2147483647 + 1) < 0)
  
  'Initialize P(0,..) array
  P(0, 0) = &HA9
  P(0, 1) = &H67
  P(0, 2) = &HB3
  P(0, 3) = &HE8
  P(0, 4) = &H4
  P(0, 5) = &HFD
  P(0, 6) = &HA3
  P(0, 7) = &H76
  P(0, 8) = &H9A
  P(0, 9) = &H92
  P(0, 10) = &H80
  P(0, 11) = &H78
  P(0, 12) = &HE4
  P(0, 13) = &HDD
  P(0, 14) = &HD1
  P(0, 15) = &H38
  P(0, 16) = &HD
  P(0, 17) = &HC6
  P(0, 18) = &H35
  P(0, 19) = &H98
  P(0, 20) = &H18
  P(0, 21) = &HF7
  P(0, 22) = &HEC
  P(0, 23) = &H6C
  P(0, 24) = &H43
  P(0, 25) = &H75
  P(0, 26) = &H37
  P(0, 27) = &H26
  P(0, 28) = &HFA
  P(0, 29) = &H13
  P(0, 30) = &H94
  P(0, 31) = &H48
  P(0, 32) = &HF2
  P(0, 33) = &HD0
  P(0, 34) = &H8B
  P(0, 35) = &H30
  P(0, 36) = &H84
  P(0, 37) = &H54
  P(0, 38) = &HDF
  P(0, 39) = &H23
  P(0, 40) = &H19
  P(0, 41) = &H5B
  P(0, 42) = &H3D
  P(0, 43) = &H59
  P(0, 44) = &HF3
  P(0, 45) = &HAE
  P(0, 46) = &HA2
  P(0, 47) = &H82
  P(0, 48) = &H63
  P(0, 49) = &H1
  P(0, 50) = &H83
  P(0, 51) = &H2E
  P(0, 52) = &HD9
  P(0, 53) = &H51
  P(0, 54) = &H9B
  P(0, 55) = &H7C
  P(0, 56) = &HA6
  P(0, 57) = &HEB
  P(0, 58) = &HA5
  P(0, 59) = &HBE
  P(0, 60) = &H16
  P(0, 61) = &HC
  P(0, 62) = &HE3
  P(0, 63) = &H61
  P(0, 64) = &HC0
  P(0, 65) = &H8C
  P(0, 66) = &H3A
  P(0, 67) = &HF5
  P(0, 68) = &H73
  P(0, 69) = &H2C
  P(0, 70) = &H25
  P(0, 71) = &HB
  P(0, 72) = &HBB
  P(0, 73) = &H4E
  P(0, 74) = &H89
  P(0, 75) = &H6B
  P(0, 76) = &H53
  P(0, 77) = &H6A
  P(0, 78) = &HB4
  P(0, 79) = &HF1
  P(0, 80) = &HE1
  P(0, 81) = &HE6
  P(0, 82) = &HBD
  P(0, 83) = &H45
  P(0, 84) = &HE2
  P(0, 85) = &HF4
  P(0, 86) = &HB6
  P(0, 87) = &H66
  P(0, 88) = &HCC
  P(0, 89) = &H95
  P(0, 90) = &H3
  P(0, 91) = &H56
  P(0, 92) = &HD4
  P(0, 93) = &H1C
  P(0, 94) = &H1E
  P(0, 95) = &HD7
  P(0, 96) = &HFB
  P(0, 97) = &HC3
  P(0, 98) = &H8E
  P(0, 99) = &HB5
  P(0, 100) = &HE9
  P(0, 101) = &HCF
  P(0, 102) = &HBF
  P(0, 103) = &HBA
  P(0, 104) = &HEA
  P(0, 105) = &H77
  P(0, 106) = &H39
  P(0, 107) = &HAF
  P(0, 108) = &H33
  P(0, 109) = &HC9
  P(0, 110) = &H62
  P(0, 111) = &H71
  P(0, 112) = &H81
  P(0, 113) = &H79
  P(0, 114) = &H9
  P(0, 115) = &HAD
  P(0, 116) = &H24
  P(0, 117) = &HCD
  P(0, 118) = &HF9
  P(0, 119) = &HD8
  P(0, 120) = &HE5
  P(0, 121) = &HC5
  P(0, 122) = &HB9
  P(0, 123) = &H4D
  P(0, 124) = &H44
  P(0, 125) = &H8
  P(0, 126) = &H86
  P(0, 127) = &HE7
  P(0, 128) = &HA1
  P(0, 129) = &H1D
  P(0, 130) = &HAA
  P(0, 131) = &HED
  P(0, 132) = &H6
  P(0, 133) = &H70
  P(0, 134) = &HB2
  P(0, 135) = &HD2
  P(0, 136) = &H41
  P(0, 137) = &H7B
  P(0, 138) = &HA0
  P(0, 139) = &H11
  P(0, 140) = &H31
  P(0, 141) = &HC2
  P(0, 142) = &H27
  P(0, 143) = &H90
  P(0, 144) = &H20
  P(0, 145) = &HF6
  P(0, 146) = &H60
  P(0, 147) = &HFF
  P(0, 148) = &H96
  P(0, 149) = &H5C
  P(0, 150) = &HB1
  P(0, 151) = &HAB
  P(0, 152) = &H9E
  P(0, 153) = &H9C
  P(0, 154) = &H52
  P(0, 155) = &H1B
  P(0, 156) = &H5F
  P(0, 157) = &H93
  P(0, 158) = &HA
  P(0, 159) = &HEF
  P(0, 160) = &H91
  P(0, 161) = &H85
  P(0, 162) = &H49
  P(0, 163) = &HEE
  P(0, 164) = &H2D
  P(0, 165) = &H4F
  P(0, 166) = &H8F
  P(0, 167) = &H3B
  P(0, 168) = &H47
  P(0, 169) = &H87
  P(0, 170) = &H6D
  P(0, 171) = &H46
  P(0, 172) = &HD6
  P(0, 173) = &H3E
  P(0, 174) = &H69
  P(0, 175) = &H64
  P(0, 176) = &H2A
  P(0, 177) = &HCE
  P(0, 178) = &HCB
  P(0, 179) = &H2F
  P(0, 180) = &HFC
  P(0, 181) = &H97
  P(0, 182) = &H5
  P(0, 183) = &H7A
  P(0, 184) = &HAC
  P(0, 185) = &H7F
  P(0, 186) = &HD5
  P(0, 187) = &H1A
  P(0, 188) = &H4B
  P(0, 189) = &HE
  P(0, 190) = &HA7
  P(0, 191) = &H5A
  P(0, 192) = &H28
  P(0, 193) = &H14
  P(0, 194) = &H3F
  P(0, 195) = &H29
  P(0, 196) = &H88
  P(0, 197) = &H3C
  P(0, 198) = &H4C
  P(0, 199) = &H2
  P(0, 200) = &HB8
  P(0, 201) = &HDA
  P(0, 202) = &HB0
  P(0, 203) = &H17
  P(0, 204) = &H55
  P(0, 205) = &H1F
  P(0, 206) = &H8A
  P(0, 207) = &H7D
  P(0, 208) = &H57
  P(0, 209) = &HC7
  P(0, 210) = &H8D
  P(0, 211) = &H74
  P(0, 212) = &HB7
  P(0, 213) = &HC4
  P(0, 214) = &H9F
  P(0, 215) = &H72
  P(0, 216) = &H7E
  P(0, 217) = &H15
  P(0, 218) = &H22
  P(0, 219) = &H12
  P(0, 220) = &H58
  P(0, 221) = &H7
  P(0, 222) = &H99
  P(0, 223) = &H34
  P(0, 224) = &H6E
  P(0, 225) = &H50
  P(0, 226) = &HDE
  P(0, 227) = &H68
  P(0, 228) = &H65
  P(0, 229) = &HBC
  P(0, 230) = &HDB
  P(0, 231) = &HF8
  P(0, 232) = &HC8
  P(0, 233) = &HA8
  P(0, 234) = &H2B
  P(0, 235) = &H40
  P(0, 236) = &HDC
  P(0, 237) = &HFE
  P(0, 238) = &H32
  P(0, 239) = &HA4
  P(0, 240) = &HCA
  P(0, 241) = &H10
  P(0, 242) = &H21
  P(0, 243) = &HF0
  P(0, 244) = &HD3
  P(0, 245) = &H5D
  P(0, 246) = &HF
  P(0, 247) = &H0
  P(0, 248) = &H6F
  P(0, 249) = &H9D
  P(0, 250) = &H36
  P(0, 251) = &H42
  P(0, 252) = &H4A
  P(0, 253) = &H5E
  P(0, 254) = &HC1
  P(0, 255) = &HE0
  
  'Initialize P(1,..) array
  P(1, 0) = &H75
  P(1, 1) = &HF3
  P(1, 2) = &HC6
  P(1, 3) = &HF4
  P(1, 4) = &HDB
  P(1, 5) = &H7B
  P(1, 6) = &HFB
  P(1, 7) = &HC8
  P(1, 8) = &H4A
  P(1, 9) = &HD3
  P(1, 10) = &HE6
  P(1, 11) = &H6B
  P(1, 12) = &H45
  P(1, 13) = &H7D
  P(1, 14) = &HE8
  P(1, 15) = &H4B
  P(1, 16) = &HD6
  P(1, 17) = &H32
  P(1, 18) = &HD8
  P(1, 19) = &HFD
  P(1, 20) = &H37
  P(1, 21) = &H71
  P(1, 22) = &HF1
  P(1, 23) = &HE1
  P(1, 24) = &H30
  P(1, 25) = &HF
  P(1, 26) = &HF8
  P(1, 27) = &H1B
  P(1, 28) = &H87
  P(1, 29) = &HFA
  P(1, 30) = &H6
  P(1, 31) = &H3F
  P(1, 32) = &H5E
  P(1, 33) = &HBA
  P(1, 34) = &HAE
  P(1, 35) = &H5B
  P(1, 36) = &H8A
  P(1, 37) = &H0
  P(1, 38) = &HBC
  P(1, 39) = &H9D
  P(1, 40) = &H6D
  P(1, 41) = &HC1
  P(1, 42) = &HB1
  P(1, 43) = &HE
  P(1, 44) = &H80
  P(1, 45) = &H5D
  P(1, 46) = &HD2
  P(1, 47) = &HD5
  P(1, 48) = &HA0
  P(1, 49) = &H84
  P(1, 50) = &H7

⌨️ 快捷键说明

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