⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 module1.bas

📁 DES算法单机版
💻 BAS
📖 第 1 页 / 共 2 页
字号:
Attribute VB_Name = "Module1"
 Public gethh As Variant, getll As Variant
 Public kk(16) As Variant
 
Public Function callkk()
Open "mmtemp" For Binary As #1
Dim kkh As Variant
Dim kkl As Variant
Get #1, , kkh
Get #1, , kkl
Close #1
'MsgBox (kkh)
'MsgBox (kkl)
Dim hibit As Byte, lowbit As Byte
If (kkh >= 2 ^ 31) Then
    hibit = 1
    kkh = kkh - 2 ^ 31
Else
    hibit = 0
End If
If (kkl >= 2 ^ 31) Then
    lowbit = 1
    kkl = kkl - 2 ^ 31
Else
    hibit = 0
End If

Dim c0 As Long, d0 As Long
c0 = Int((kkl Mod (2 ^ 29)) / 2 ^ 28) * (2 ^ 0) + Int((kkl Mod (2 ^ 21)) / 2 ^ 20) * (2 ^ 1) _
+ Int((kkl Mod (2 ^ 13)) / 2 ^ 12) * (2 ^ 2) + Int((kkl Mod (2 ^ 5)) / 2 ^ 4) * (2 ^ 3) _
+ Int((kkh Mod (2 ^ 30)) / 2 ^ 29) * (2 ^ 4) + Int((kkh Mod (2 ^ 22)) / 2 ^ 21) * (2 ^ 5) _
+ Int((kkh Mod (2 ^ 14)) / 2 ^ 13) * (2 ^ 6) + Int((kkh Mod (2 ^ 6)) / 2 ^ 5) * (2 ^ 7) _
+ Int((kkl Mod (2 ^ 30)) / 2 ^ 29) * (2 ^ 8) + Int((kkl Mod (2 ^ 22)) / 2 ^ 21) * (2 ^ 9) _
+ Int((kkl Mod (2 ^ 14)) / 2 ^ 13) * (2 ^ 10) + Int((kkl Mod (2 ^ 6)) / 2 ^ 5) * (2 ^ 11) _
+ Int(kkh / 2 ^ 30) * (2 ^ 12) + Int((kkh Mod (2 ^ 23)) / 2 ^ 22) * (2 ^ 13) _
+ Int((kkh Mod (2 ^ 15)) / 2 ^ 14) * (2 ^ 14) + Int((kkh Mod (2 ^ 7)) / 2 ^ 6) * (2 ^ 15) _
+ Int(kkl / 2 ^ 30) * (2 ^ 16) + Int((kkl Mod (2 ^ 23)) / 2 ^ 22) * (2 ^ 17) _
+ Int((kkl Mod (2 ^ 15)) / 2 ^ 14) * (2 ^ 18) + Int((kkl Mod (2 ^ 7)) / 2 ^ 6) * (2 ^ 19) _
+ hibit * (2 ^ 20) + Int((kkh Mod (2 ^ 24)) / 2 ^ 23) * (2 ^ 21) _
+ Int((kkh Mod (2 ^ 16)) / 2 ^ 15) * (2 ^ 22) + Int((kkh Mod (2 ^ 8)) / 2 ^ 7) * (2 ^ 23) _
+ lowbit * (2 ^ 24) + Int((kkl Mod (2 ^ 24)) / 2 ^ 23) * (2 ^ 25) _
+ Int((kkl Mod (2 ^ 16)) / 2 ^ 15) * (2 ^ 26) + Int((kkl Mod (2 ^ 8)) / 2 ^ 7) * (2 ^ 27)

d0 = Int((kkh Mod (2 ^ 29)) / 2 ^ 28) * (2 ^ 0) + Int((kkh Mod (2 ^ 21)) / 2 ^ 20) * (2 ^ 1) _
+ Int((kkh Mod (2 ^ 13)) / 2 ^ 12) * (2 ^ 2) + Int((kkh Mod (2 ^ 5)) / 2 ^ 4) * (2 ^ 3) _
+ Int((kkh Mod (2 ^ 28)) / 2 ^ 27) * (2 ^ 4) + Int((kkh Mod (2 ^ 20)) / 2 ^ 19) * (2 ^ 5) _
+ Int((kkh Mod (2 ^ 12)) / 2 ^ 11) * (2 ^ 6) + Int((kkh Mod (2 ^ 4)) / 2 ^ 3) * (2 ^ 7) _
+ Int((kkl Mod (2 ^ 28)) / 2 ^ 27) * (2 ^ 8) + Int((kkl Mod (2 ^ 20)) / 2 ^ 19) * (2 ^ 9) _
+ Int((kkl Mod (2 ^ 12)) / 2 ^ 11) * (2 ^ 10) + Int((kkl Mod (2 ^ 4)) / 2 ^ 3) * (2 ^ 11) _
+ Int((kkh Mod (2 ^ 27)) / 2 ^ 26) * (2 ^ 12) + Int((kkh Mod (2 ^ 19)) / 2 ^ 18) * (2 ^ 13) _
+ Int((kkh Mod (2 ^ 11)) / 2 ^ 10) * (2 ^ 14) + Int((kkh Mod (2 ^ 3)) / 2 ^ 2) * (2 ^ 15) _
+ Int((kkl Mod (2 ^ 27)) / 2 ^ 26) * (2 ^ 16) + Int((kkl Mod (2 ^ 19)) / 2 ^ 18) * (2 ^ 17) _
+ Int((kkl Mod (2 ^ 11)) / 2 ^ 10) * (2 ^ 18) + Int((kkl Mod (2 ^ 3)) / 2 ^ 2) * (2 ^ 19) _
+ Int((kkh Mod (2 ^ 26)) / 2 ^ 25) * (2 ^ 20) + Int((kkh Mod (2 ^ 18)) / 2 ^ 17) * (2 ^ 21) _
+ Int((kkh Mod (2 ^ 10)) / 2 ^ 9) * (2 ^ 22) + Int((kkh Mod (2 ^ 2)) / 2 ^ 1) * (2 ^ 23) _
+ Int((kkl Mod (2 ^ 26)) / 2 ^ 25) * (2 ^ 24) + Int((kkl Mod (2 ^ 18)) / 2 ^ 17) * (2 ^ 25) _
+ Int((kkl Mod (2 ^ 10)) / 2 ^ 9) * (2 ^ 26) + Int((kkl Mod (2 ^ 2)) / 2 ^ 1) * (2 ^ 27)
c0 = bitleft(c0)
d0 = bitleft(d0)
kk(1) = pc2(c0, d0)
c0 = bitleft(c0)
d0 = bitleft(d0)
kk(2) = pc2(c0, d0)
c0 = bitleft(c0)
c0 = bitleft(c0)
d0 = bitleft(d0)
d0 = bitleft(d0)
kk(3) = pc2(c0, d0)
c0 = bitleft(c0)
c0 = bitleft(c0)
d0 = bitleft(d0)
d0 = bitleft(d0)
kk(4) = pc2(c0, d0)
c0 = bitleft(c0)
c0 = bitleft(c0)
d0 = bitleft(d0)
d0 = bitleft(d0)
kk(5) = pc2(c0, d0)
c0 = bitleft(c0)
c0 = bitleft(c0)
d0 = bitleft(d0)
d0 = bitleft(d0)
kk(6) = pc2(c0, d0)
c0 = bitleft(c0)
c0 = bitleft(c0)
d0 = bitleft(d0)
d0 = bitleft(d0)
kk(7) = pc2(c0, d0)
c0 = bitleft(c0)
c0 = bitleft(c0)
d0 = bitleft(d0)
d0 = bitleft(d0)
kk(8) = pc2(c0, d0)
c0 = bitleft(c0)
d0 = bitleft(d0)
kk(9) = pc2(c0, d0)
c0 = bitleft(c0)
c0 = bitleft(c0)
d0 = bitleft(d0)
d0 = bitleft(d0)
kk(10) = pc2(c0, d0)
c0 = bitleft(c0)
c0 = bitleft(c0)
d0 = bitleft(d0)
d0 = bitleft(d0)
kk(11) = pc2(c0, d0)
c0 = bitleft(c0)
c0 = bitleft(c0)
d0 = bitleft(d0)
d0 = bitleft(d0)
kk(12) = pc2(c0, d0)
c0 = bitleft(c0)
c0 = bitleft(c0)
d0 = bitleft(d0)
d0 = bitleft(d0)
kk(13) = pc2(c0, d0)
c0 = bitleft(c0)
c0 = bitleft(c0)
d0 = bitleft(d0)
d0 = bitleft(d0)
kk(14) = pc2(c0, d0)
c0 = bitleft(c0)
c0 = bitleft(c0)
d0 = bitleft(d0)
d0 = bitleft(d0)
kk(15) = pc2(c0, d0)
c0 = bitleft(c0)
d0 = bitleft(d0)
kk(16) = pc2(c0, d0)

End Function


Function bitleft(ByVal lval As Long) As Long
If lval >= 2 ^ 27 Then
    bitleft = (lval Mod (2 ^ 27)) * 2 + 1 '最高位为1
Else
    bitleft = lval * 2
End If
End Function

Function pc2(ByVal c2h As Long, ByVal c2l As Long)
pc2 = Int((c2l Mod (2 ^ 25)) / 2 ^ 24) * (2 ^ 0) + Int((c2l Mod (2 ^ 28)) / 2 ^ 27) * (2 ^ 1) _
+ Int((c2l Mod (2 ^ 21)) / 2 ^ 20) * (2 ^ 2) + Int((c2l Mod (2 ^ 7)) / 2 ^ 6) * (2 ^ 3) _
+ Int((c2l Mod (2 ^ 15)) / 2 ^ 14) * (2 ^ 4) + Int((c2l Mod (2 ^ 11)) / 2 ^ 10) * (2 ^ 5) _
+ Int((c2l Mod (2 ^ 4)) / 2 ^ 3) * (2 ^ 6) + Int((c2l Mod (2 ^ 23)) / 2 ^ 22) * (2 ^ 7) _
+ Int((c2l Mod (2 ^ 1)) / 2 ^ 0) * (2 ^ 8) + Int((c2l Mod (2 ^ 18)) / 2 ^ 17) * (2 ^ 9) _
+ Int((c2l Mod (2 ^ 8)) / 2 ^ 7) * (2 ^ 10) + Int((c2l Mod (2 ^ 13)) / 2 ^ 12) * (2 ^ 11) _
+ Int((c2l Mod (2 ^ 9)) / 2 ^ 8) * (2 ^ 12) + Int((c2l Mod (2 ^ 24)) / 2 ^ 23) * (2 ^ 13) _
+ Int((c2l Mod (2 ^ 12)) / 2 ^ 11) * (2 ^ 14) + Int((c2l Mod (2 ^ 6)) / 2 ^ 5) * (2 ^ 15) _
+ Int((c2l Mod (2 ^ 17)) / 2 ^ 16) * (2 ^ 16) + Int((c2l Mod (2 ^ 27)) / 2 ^ 26) * (2 ^ 17) _
+ Int((c2l Mod (2 ^ 2)) / 2 ^ 1) * (2 ^ 18) + Int((c2l Mod (2 ^ 10)) / 2 ^ 9) * (2 ^ 19) _
+ Int((c2l Mod (2 ^ 20)) / 2 ^ 19) * (2 ^ 20) + Int((c2l Mod (2 ^ 26)) / 2 ^ 25) * (2 ^ 21) _
+ Int((c2l Mod (2 ^ 5)) / 2 ^ 4) * (2 ^ 22) + Int((c2l Mod (2 ^ 16)) / 2 ^ 15) * (2 ^ 23) _
+ Int((c2h Mod (2 ^ 27)) / 2 ^ 26) * (2 ^ 24) + Int((c2h Mod (2 ^ 16)) / 2 ^ 15) * (2 ^ 25) _
+ Int((c2h Mod (2 ^ 9)) / 2 ^ 8) * (2 ^ 26) + Int((c2h Mod (2 ^ 2)) / 2 ^ 1) * (2 ^ 27) _
+ Int((c2h Mod (2 ^ 22)) / 2 ^ 21) * (2 ^ 28) + Int((c2h Mod (2 ^ 13)) / 2 ^ 12) * (2 ^ 29) _
+ Int((c2h Mod (2 ^ 21)) / 2 ^ 20) * (2 ^ 30) + Int((c2h Mod (2 ^ 3)) / 2 ^ 2) * (2 ^ 31) _
+ Int((c2h Mod (2 ^ 25)) / 2 ^ 24) * (2 ^ 32) + Int((c2h Mod (2 ^ 17)) / 2 ^ 16) * (2 ^ 33) _
+ Int((c2h Mod (2 ^ 10)) / 2 ^ 9) * (2 ^ 34) + Int((c2h Mod (2 ^ 6)) / 2 ^ 5) * (2 ^ 35) _
+ Int((c2h Mod (2 ^ 19)) / 2 ^ 18) * (2 ^ 36) + Int((c2h Mod (2 ^ 8)) / 2 ^ 7) * (2 ^ 37) _
+ Int((c2h Mod (2 ^ 23)) / 2 ^ 22) * (2 ^ 38) + Int((c2h Mod (2 ^ 14)) / 2 ^ 13) * (2 ^ 39) _
+ Int((c2h Mod (2 ^ 1)) / 2 ^ 0) * (2 ^ 40) + Int((c2h Mod (2 ^ 26)) / 2 ^ 25) * (2 ^ 41) _
+ Int((c2h Mod (2 ^ 24)) / 2 ^ 23) * (2 ^ 42) + Int((c2h Mod (2 ^ 28)) / 2 ^ 27) * (2 ^ 43) _
+ Int((c2h Mod (2 ^ 5)) / 2 ^ 4) * (2 ^ 44) + Int((c2h Mod (2 ^ 18)) / 2 ^ 17) * (2 ^ 45) _
+ Int((c2h Mod (2 ^ 12)) / 2 ^ 11) * (2 ^ 46) + Int((c2h Mod (2 ^ 15)) / 2 ^ 14) * (2 ^ 47)

End Function



Public Function ff(ByVal valr0 As Variant, ByVal valkk As Variant) As Variant
Dim eval As Variant
Dim evalh As Long, evall As Long, valkkh As Long, valkkl As Long
Dim hibit As Byte
If (valr0 >= 2 ^ 31) Then
    hibit = 1
    valr0 = valr0 - 2 ^ 31
Else
    hibit = 0
End If

eval = hibit * (2 ^ 0) + Int((valr0 Mod (2 ^ 1)) / 2 ^ 0) * (2 ^ 1) _
+ Int((valr0 Mod (2 ^ 2)) / 2 ^ 1) * (2 ^ 2) + Int((valr0 Mod (2 ^ 3)) / 2 ^ 2) * (2 ^ 3) _
+ Int((valr0 Mod (2 ^ 4)) / 2 ^ 3) * (2 ^ 4) + Int((valr0 Mod (2 ^ 5)) / 2 ^ 4) * (2 ^ 5) _
+ Int((valr0 Mod (2 ^ 4)) / 2 ^ 3) * (2 ^ 6) + Int((valr0 Mod (2 ^ 5)) / 2 ^ 4) * (2 ^ 7) _
+ Int((valr0 Mod (2 ^ 6)) / 2 ^ 5) * (2 ^ 8) + Int((valr0 Mod (2 ^ 7)) / 2 ^ 6) * (2 ^ 9) _
+ Int((valr0 Mod (2 ^ 8)) / 2 ^ 7) * (2 ^ 10) + Int((valr0 Mod (2 ^ 9)) / 2 ^ 8) * (2 ^ 11) _
+ Int((valr0 Mod (2 ^ 8)) / 2 ^ 7) * (2 ^ 12) + Int((valr0 Mod (2 ^ 9)) / 2 ^ 8) * (2 ^ 13) _
+ Int((valr0 Mod (2 ^ 10)) / 2 ^ 9) * (2 ^ 14) + Int((valr0 Mod (2 ^ 11)) / 2 ^ 10) * (2 ^ 15) _
+ Int((valr0 Mod (2 ^ 12)) / 2 ^ 11) * (2 ^ 16) + Int((valr0 Mod (2 ^ 13)) / 2 ^ 12) * (2 ^ 17) _
+ Int((valr0 Mod (2 ^ 12)) / 2 ^ 11) * (2 ^ 18) + Int((valr0 Mod (2 ^ 13)) / 2 ^ 12) * (2 ^ 19) _
+ Int((valr0 Mod (2 ^ 14)) / 2 ^ 13) * (2 ^ 20) + Int((valr0 Mod (2 ^ 15)) / 2 ^ 14) * (2 ^ 21) _
+ Int((valr0 Mod (2 ^ 16)) / 2 ^ 15) * (2 ^ 22) + Int((valr0 Mod (2 ^ 17)) / 2 ^ 16) * (2 ^ 23) _
+ Int((valr0 Mod (2 ^ 16)) / 2 ^ 15) * (2 ^ 24) + Int((valr0 Mod (2 ^ 17)) / 2 ^ 16) * (2 ^ 25) _
+ Int((valr0 Mod (2 ^ 18)) / 2 ^ 17) * (2 ^ 26) + Int((valr0 Mod (2 ^ 19)) / 2 ^ 18) * (2 ^ 27) _
+ Int((valr0 Mod (2 ^ 20)) / 2 ^ 19) * (2 ^ 28) + Int((valr0 Mod (2 ^ 21)) / 2 ^ 20) * (2 ^ 29) _
+ Int((valr0 Mod (2 ^ 20)) / 2 ^ 19) * (2 ^ 30) + Int((valr0 Mod (2 ^ 21)) / 2 ^ 20) * (2 ^ 31) _
+ Int((valr0 Mod (2 ^ 22)) / 2 ^ 21) * (2 ^ 32) + Int((valr0 Mod (2 ^ 23)) / 2 ^ 22) * (2 ^ 33) _
+ Int((valr0 Mod (2 ^ 24)) / 2 ^ 23) * (2 ^ 34) + Int((valr0 Mod (2 ^ 25)) / 2 ^ 24) * (2 ^ 35) _
+ Int((valr0 Mod (2 ^ 24)) / 2 ^ 23) * (2 ^ 36) + Int((valr0 Mod (2 ^ 25)) / 2 ^ 24) * (2 ^ 37) _
+ Int((valr0 Mod (2 ^ 26)) / 2 ^ 25) * (2 ^ 38) + Int((valr0 Mod (2 ^ 27)) / 2 ^ 26) * (2 ^ 39) _
+ Int((valr0 Mod (2 ^ 28)) / 2 ^ 27) * (2 ^ 40) + Int((valr0 Mod (2 ^ 29)) / 2 ^ 28) * (2 ^ 41) _
+ Int((valr0 Mod (2 ^ 28)) / 2 ^ 27) * (2 ^ 42) + Int((valr0 Mod (2 ^ 29)) / 2 ^ 28) * (2 ^ 43) _
+ Int((valr0 Mod (2 ^ 30)) / 2 ^ 29) * (2 ^ 44) + Int(valr0 / 2 ^ 30) * (2 ^ 45) _
+ hibit * (2 ^ 46) + Int((valr0 Mod (2 ^ 1)) / 2 ^ 0) * (2 ^ 47)

evalh = Int(eval / 2 ^ 24)
evall = eval - evalh * (2 ^ 24)
valkkh = Int(valkk / 2 ^ 24)
valkkl = valkk - valkkh * (2 ^ 24)
evalh = evalh Xor valkkh
evall = evall Xor valkkl
Dim s(8) As Integer
s(1) = Int(evalh / 2 ^ 18)
s(2) = (evalh And ((2 ^ 12) * 63)) / (2 ^ 12)
s(3) = (evalh And ((2 ^ 6) * 63)) / (2 ^ 6)
s(4) = evalh And 63
s(5) = Int(evall / 2 ^ 18)
s(6) = (evall And ((2 ^ 12) * 63)) / (2 ^ 12)
s(7) = (evall And ((2 ^ 6) * 63)) / (2 ^ 6)
s(8) = evall And 63

Dim rr As Byte, hh As Byte
rr = (s(1) And 1) + Int(s(1) / 2 ^ 5) * 2
hh = (s(1) And 30) / 2
If ((rr = 1 And hh = 0) Or (rr = 3 And hh = 13) Or (rr = 0 And hh = 14) Or (rr = 2 And hh = 15)) Then
    s(1) = 0
ElseIf ((rr = 2 And hh = 1) Or (rr = 3 And hh = 6) Or (rr = 1 And hh = 7) Or (rr = 0 And hh = 3)) Then
    s(1) = 1
ElseIf ((rr = 3 And hh = 3) Or (rr = 1 And hh = 5) Or (rr = 2 And hh = 6) Or (rr = 0 And hh = 4)) Then
    s(1) = 2
ElseIf ((rr = 0 And hh = 8) Or (rr = 3 And hh = 10) Or (rr = 2 And hh = 12) Or (rr = 1 And hh = 14)) Then
    s(1) = 3
ElseIf ((rr = 2 And hh = 0) Or (rr = 1 And hh = 3) Or (rr = 0 And hh = 1) Or (rr = 3 And hh = 4)) Then
    s(1) = 4
ElseIf ((rr = 3 And hh = 8) Or (rr = 0 And hh = 12) Or (rr = 1 And hh = 13) Or (rr = 2 And hh = 14)) Then
    s(1) = 5
ElseIf ((rr = 2 And hh = 5) Or (rr = 1 And hh = 9) Or (rr = 0 And hh = 10) Or (rr = 3 And hh = 14)) Then
    s(1) = 6
ElseIf ((rr = 1 And hh = 2) Or (rr = 3 And hh = 7) Or (rr = 2 And hh = 11) Or (rr = 0 And hh = 15)) Then
    s(1) = 7
ElseIf ((rr = 2 And hh = 3) Or (rr = 0 And hh = 7) Or (rr = 3 And hh = 2) Or (rr = 1 And hh = 15)) Then
    s(1) = 8
ElseIf ((rr = 3 And hh = 5) Or (rr = 2 And hh = 10) Or (rr = 1 And hh = 12) Or (rr = 0 And hh = 13)) Then
    s(1) = 9
ElseIf ((rr = 1 And hh = 8) Or (rr = 0 And hh = 9) Or (rr = 3 And hh = 12) Or (rr = 2 And hh = 13)) Then
    s(1) = 10
ElseIf ((rr = 0 And hh = 6) Or (rr = 2 And hh = 7) Or (rr = 3 And hh = 9) Or (rr = 1 And hh = 11)) Then
    s(1) = 11
ElseIf ((rr = 3 And hh = 1) Or (rr = 2 And hh = 9) Or (rr = 1 And hh = 10) Or (rr = 0 And hh = 11)) Then
    s(1) = 12
ElseIf ((rr = 0 And hh = 2) Or (rr = 2 And hh = 4) Or (rr = 1 And hh = 6) Or (rr = 3 And hh = 15)) Then
    s(1) = 13
ElseIf ((rr = 0 And hh = 0) Or (rr = 2 And hh = 2) Or (rr = 1 And hh = 4) Or (rr = 3 And hh = 11)) Then
    s(1) = 14
ElseIf ((rr = 3 And hh = 0) Or (rr = 1 And hh = 1) Or (rr = 0 And hh = 5) Or (rr = 2 And hh = 8)) Then
    s(1) = 15
End If


rr = (s(2) And 1) + Int(s(2) / 2 ^ 5) * 2
hh = (s(2) And 30) / 2
If ((rr = 2 And hh = 0) Or (rr = 1 And hh = 9) Or (rr = 3 And hh = 12) Or (rr = 0 And hh = 13)) Then
    s(2) = 0
ElseIf ((rr = 3 And hh = 3) Or (rr = 2 And hh = 7) Or (rr = 0 And hh = 1) Or (rr = 1 And hh = 10)) Then
    s(2) = 1
ElseIf ((rr = 1 And hh = 5) Or (rr = 3 And hh = 7) Or (rr = 0 And hh = 10) Or (rr = 2 And hh = 14)) Then
    s(2) = 2
ElseIf ((rr = 1 And hh = 0) Or (rr = 3 And hh = 4) Or (rr = 0 And hh = 6) Or (rr = 2 And hh = 13)) Then
    s(2) = 3
ElseIf ((rr = 1 And hh = 2) Or (rr = 2 And hh = 5) Or (rr = 3 And hh = 6) Or (rr = 0 And hh = 7)) Then
    s(2) = 4
ElseIf ((rr = 2 And hh = 8) Or (rr = 3 And hh = 13) Or (rr = 0 And hh = 14) Or (rr = 1 And hh = 15)) Then

⌨️ 快捷键说明

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