📄 clstwofish.cls
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -