📄 mdllogin.bas
字号:
worka(13) = buffer(8)
worka(14) = buffer(9)
worka(15) = buffer(10)
worka(16) = buffer(11)
worka(17) = buffer(12)
worka(18) = buffer(11)
worka(19) = buffer(12)
worka(20) = buffer(13)
worka(21) = buffer(14)
worka(22) = buffer(15)
worka(23) = buffer(16)
worka(24) = buffer(15)
worka(25) = buffer(16)
worka(26) = buffer(17)
worka(27) = buffer(18)
worka(28) = buffer(19)
worka(29) = buffer(20)
worka(30) = buffer(19)
worka(31) = buffer(20)
worka(32) = buffer(21)
worka(33) = buffer(22)
worka(34) = buffer(23)
worka(35) = buffer(24)
worka(36) = buffer(23)
worka(37) = buffer(24)
worka(38) = buffer(25)
worka(39) = buffer(26)
worka(40) = buffer(27)
worka(41) = buffer(28)
worka(42) = buffer(27)
worka(43) = buffer(28)
worka(44) = buffer(29)
worka(45) = buffer(30)
worka(46) = buffer(31)
worka(47) = buffer(0)
'/* KS Function Begin */
If flg = 1 Then
nbrofshift = Shift(iter - 1)
For i = 0 To nbrofshift - 1
temp1 = kwork(0)
temp2 = kwork(28)
For j = 0 To 26
kwork(j) = kwork(j + 1)
kwork(j + 28) = kwork(j + 29)
Next j
kwork(27) = temp1
kwork(55) = temp2
Next i
Else
If iter > 1 Then
nbrofshift = Shift(17 - iter)
For i = 0 To nbrofshift - 1
temp1 = kwork(27)
temp2 = kwork(55)
For j = 27 To 1
kwork(j) = kwork(j - 1)
kwork(j + 28) = kwork(j + 27)
Next j
kwork(0) = temp1
kwork(28) = temp2
Next i
End If
End If
'/* Permute kwork - PC2 */
kn(0) = kwork(13)
kn(1) = kwork(16)
kn(2) = kwork(10)
kn(3) = kwork(23)
kn(4) = kwork(0)
kn(5) = kwork(4)
kn(6) = kwork(2)
kn(7) = kwork(27)
kn(8) = kwork(14)
kn(9) = kwork(5)
kn(10) = kwork(20)
kn(11) = kwork(9)
kn(12) = kwork(22)
kn(13) = kwork(18)
kn(14) = kwork(11)
kn(15) = kwork(3)
kn(16) = kwork(25)
kn(17) = kwork(7)
kn(18) = kwork(15)
kn(19) = kwork(6)
kn(20) = kwork(26)
kn(21) = kwork(19)
kn(22) = kwork(12)
kn(23) = kwork(1)
kn(24) = kwork(40)
kn(25) = kwork(51)
kn(26) = kwork(30)
kn(27) = kwork(36)
kn(28) = kwork(46)
kn(29) = kwork(54)
kn(30) = kwork(29)
kn(31) = kwork(39)
kn(32) = kwork(50)
kn(33) = kwork(44)
kn(34) = kwork(32)
kn(35) = kwork(47)
kn(36) = kwork(43)
kn(37) = kwork(48)
kn(38) = kwork(38)
kn(39) = kwork(55)
kn(40) = kwork(33)
kn(41) = kwork(52)
kn(42) = kwork(45)
kn(43) = kwork(41)
kn(44) = kwork(49)
kn(45) = kwork(35)
kn(46) = kwork(28)
kn(47) = kwork(31)
'/* KS Function End */
'/* worka XOR kn */
For i = 0 To 47
worka(i) = worka(i) Xor kn(i)
Next i
'/* 8 s-functions */
valindex = s1(2 * worka(0) + worka(5), _
2 * (2 * (2 * worka(1) + worka(2)) + worka(3)) + worka(4))
valindex = valindex * 4
kn(0) = Binary(0 + valindex)
kn(1) = Binary(1 + valindex)
kn(2) = Binary(2 + valindex)
kn(3) = Binary(3 + valindex)
valindex = s2(2 * worka(6) + worka(11), _
2 * (2 * (2 * worka(7) + worka(8)) + worka(9)) + worka(10))
valindex = valindex * 4
kn(4) = Binary(0 + valindex)
kn(5) = Binary(1 + valindex)
kn(6) = Binary(2 + valindex)
kn(7) = Binary(3 + valindex)
valindex = s3(2 * worka(12) + worka(17), _
2 * (2 * (2 * worka(13) + worka(14)) + worka(15)) + worka(16))
valindex = valindex * 4
kn(8) = Binary(0 + valindex)
kn(9) = Binary(1 + valindex)
kn(10) = Binary(2 + valindex)
kn(11) = Binary(3 + valindex)
valindex = s4(2 * worka(18) + worka(23), _
2 * (2 * (2 * worka(19) + worka(20)) + worka(21)) + worka(22))
valindex = valindex * 4
kn(12) = Binary(0 + valindex)
kn(13) = Binary(1 + valindex)
kn(14) = Binary(2 + valindex)
kn(15) = Binary(3 + valindex)
valindex = s5(2 * worka(24) + worka(29), _
2 * (2 * (2 * worka(25) + worka(26)) + worka(27)) + worka(28))
valindex = valindex * 4
kn(16) = Binary(0 + valindex)
kn(17) = Binary(1 + valindex)
kn(18) = Binary(2 + valindex)
kn(19) = Binary(3 + valindex)
valindex = s6(2 * worka(30) + worka(35), _
2 * (2 * (2 * worka(31) + worka(32)) + worka(33)) + worka(34))
valindex = valindex * 4
kn(20) = Binary(0 + valindex)
kn(21) = Binary(1 + valindex)
kn(22) = Binary(2 + valindex)
kn(23) = Binary(3 + valindex)
valindex = s7(2 * worka(36) + worka(41), _
2 * (2 * (2 * worka(37) + worka(38)) + worka(39)) + worka(40))
valindex = valindex * 4
kn(24) = Binary(0 + valindex)
kn(25) = Binary(1 + valindex)
kn(26) = Binary(2 + valindex)
kn(27) = Binary(3 + valindex)
valindex = s8(2 * worka(42) + worka(47), _
2 * (2 * (2 * worka(43) + worka(44)) + worka(45)) + worka(46))
valindex = valindex * 4
kn(28) = Binary(0 + valindex)
kn(29) = Binary(1 + valindex)
kn(30) = Binary(2 + valindex)
kn(31) = Binary(3 + valindex)
'/* Permute - P */
worka(0) = kn(15)
worka(1) = kn(6)
worka(2) = kn(19)
worka(3) = kn(20)
worka(4) = kn(28)
worka(5) = kn(11)
worka(6) = kn(27)
worka(7) = kn(16)
worka(8) = kn(0)
worka(9) = kn(14)
worka(10) = kn(22)
worka(11) = kn(25)
worka(12) = kn(4)
worka(13) = kn(17)
worka(14) = kn(30)
worka(15) = kn(9)
worka(16) = kn(1)
worka(17) = kn(7)
worka(18) = kn(23)
worka(19) = kn(13)
worka(20) = kn(31)
worka(21) = kn(26)
worka(22) = kn(2)
worka(23) = kn(8)
worka(24) = kn(18)
worka(25) = kn(12)
worka(26) = kn(29)
worka(27) = kn(5)
worka(28) = kn(21)
worka(29) = kn(10)
worka(30) = kn(3)
worka(31) = kn(24)
' /* bufout XOR worka */
For i = 0 To 31
bufout(i + 32) = bufout(i) Xor worka(i)
bufout(i) = buffer(i)
Next i
Next iter
'/* Prepare Output */
For i = 0 To 31
j = bufout(i)
bufout(i) = bufout(32 + i)
bufout(32 + i) = j
Next i
' /* Inverse Initial Permutation */
buffer(0) = bufout(39)
buffer(1) = bufout(7)
buffer(2) = bufout(47)
buffer(3) = bufout(15)
buffer(4) = bufout(55)
buffer(5) = bufout(23)
buffer(6) = bufout(63)
buffer(7) = bufout(31)
buffer(8) = bufout(38)
buffer(9) = bufout(6)
buffer(10) = bufout(46)
buffer(11) = bufout(14)
buffer(12) = bufout(54)
buffer(13) = bufout(22)
buffer(14) = bufout(62)
buffer(15) = bufout(30)
buffer(16) = bufout(37)
buffer(17) = bufout(5)
buffer(18) = bufout(45)
buffer(19) = bufout(13)
buffer(20) = bufout(53)
buffer(21) = bufout(21)
buffer(22) = bufout(61)
buffer(23) = bufout(29)
buffer(24) = bufout(36)
buffer(25) = bufout(4)
buffer(26) = bufout(44)
buffer(27) = bufout(12)
buffer(28) = bufout(52)
buffer(29) = bufout(20)
buffer(30) = bufout(60)
buffer(31) = bufout(28)
buffer(32) = bufout(35)
buffer(33) = bufout(3)
buffer(34) = bufout(43)
buffer(35) = bufout(11)
buffer(36) = bufout(51)
buffer(37) = bufout(19)
buffer(38) = bufout(59)
buffer(39) = bufout(27)
buffer(40) = bufout(34)
buffer(41) = bufout(2)
buffer(42) = bufout(42)
buffer(43) = bufout(10)
buffer(44) = bufout(50)
buffer(45) = bufout(18)
buffer(46) = bufout(58)
buffer(47) = bufout(26)
buffer(48) = bufout(33)
buffer(49) = bufout(1)
buffer(50) = bufout(41)
buffer(51) = bufout(9)
buffer(52) = bufout(49)
buffer(53) = bufout(17)
buffer(54) = bufout(57)
buffer(55) = bufout(25)
buffer(56) = bufout(32)
buffer(57) = bufout(0)
buffer(58) = bufout(40)
buffer(59) = bufout(8)
buffer(60) = bufout(48)
buffer(61) = bufout(16)
buffer(62) = bufout(56)
buffer(63) = bufout(24)
j = 0
For i = 0 To 7
dest(i) = 0 '0x00
For k = 0 To 6
dest(i) = ((dest(i)) + buffer(j + k)) * 2
Next k
dest(i) = dest(i) + buffer(j + 7)
j = j + 8
Next i
Result = Space(16)
For i = 1 To 16
Mid(Result, i, 1) = "0"
Next i
'MsgBox result
For j = 0 To 7
r = CStr(Hex(dest(j)))
For i = 1 To Len(r)
Mid(Result, 2 * j + 2 + 1 - i, 1) = Mid(r, Len(r) + 1 - i, 1)
Next i
Next j
Des = Result
' For i = 0 To 7
' des = des + "|" + CStr(dest(i))
' Next i
Exit Function
Err:
Des = ""
MsgBox Err.Description
End Function
Private Function dd(it As Long) As String
On Error GoTo EP
Dim i As Integer
Dim r, Result As String
Result = Space(8)
For i = 1 To 8
Mid(Result, i, 1) = "0"
Next i
r = CStr(Hex(it))
For i = 1 To Len(r)
Mid(Result, 8 - Len(r) + i, 1) = Mid(r, i, 1)
Next i
dd = Result
Exit Function
EP:
MsgBox Err.Description
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -