📄 module2.bas
字号:
Attribute VB_Name = "Module2"
Option Explicit
Dim mmSn(1 To 19) As Byte
Dim cSn(1 To 19) As String
Dim vvSn(1 To 19) As Byte
Public Function operationSN(inSN As String) As String
On Error Resume Next
Dim i As Integer
Dim pSerial As String
Dim tmpByte As Byte
Dim mSN As String '= "IMEI352495000428231"
mSN = inSN 'txtUserName.Text
For i = 1 To 19
mmSn(i) = Asc(Mid(mSN, i, 1)) ', Mid(vSn, i, 1), 2) ' Val(Mid(vSn, i, 1)))
vvSn(i) = Asc(Mid(vSn, i, i))
Next i
tmpByte = 0
For i = 1 To 19
tmpByte = tmpByte Xor mmSn(i)
Next i
cSn(1) = Chr(ckByte(tmpByte, 1)) ';1
tmpByte = 0
For i = 1 To 19
tmpByte = tmpByte Xor vvSn(i) Xor mmSn(i)
Next i
cSn(2) = Chr(ckByte(tmpByte, 2)) ';2
tmpByte = mmSn(3) Xor vvSn(3) Xor tmpByte
cSn(3) = Chr(ckByte(tmpByte, 3))
For i = 1 To 19
tmpByte = (tmpByte + mmSn(i)) And &H7F
Next i
tmpByte = tmpByte Xor &H7F
cSn(4) = Chr(ckByte(tmpByte, 4))
tmpByte = mmSn(5) Xor vvSn(5) Xor Asc(cSn(3))
cSn(5) = Chr(ckByte(tmpByte, 5))
tmpByte = mmSn(6) Xor vvSn(6) Xor Asc(cSn(2))
tmpByte = tmpByte Xor &H7E
cSn(6) = Chr(ckByte(tmpByte, 6))
tmpByte = mmSn(7) Xor vvSn(7) Xor Asc(cSn(1))
cSn(7) = Chr(ckByte(tmpByte, 7))
tmpByte = (mmSn(8) * 2) And &H7F
cSn(8) = Chr(ckByte(tmpByte, 8))
tmpByte = (mmSn(9) * 3 / 2) And &H7F
cSn(9) = Chr(ckByte(tmpByte, 9))
tmpByte = mmSn(10) Xor vvSn(10) Xor Asc(cSn(3))
tmpByte = tmpByte Xor &H7A
cSn(10) = Chr(ckByte(tmpByte, 10))
tmpByte = mmSn(11) Xor vvSn(11) Xor Asc(cSn(1))
cSn(11) = Chr(ckByte(tmpByte, 11))
tmpByte = (mmSn(12) Xor vvSn(12)) / 2
cSn(12) = Chr(ckByte(tmpByte, 12))
tmpByte = mmSn(13) Xor vvSn(13) Xor Asc(cSn(4))
tmpByte = tmpByte Xor &H75
cSn(13) = Chr(ckByte(tmpByte, 13))
tmpByte = mmSn(14) Xor vvSn(14) Xor Asc(cSn(3))
cSn(14) = Chr(ckByte(tmpByte, 14))
tmpByte = mmSn(15) Xor vvSn(15) Xor Asc(cSn(1))
cSn(15) = Chr(ckByte(tmpByte, 15))
tmpByte = mmSn(16) Xor vvSn(16) Xor Asc(cSn(2))
tmpByte = tmpByte Xor &H7F
cSn(16) = Chr(ckByte(tmpByte, 16))
tmpByte = mmSn(17) Xor vvSn(17) Or Asc(cSn(2)) And &H7F
cSn(17) = Chr(ckByte(tmpByte, 17))
tmpByte = mmSn(18) Xor vvSn(18) Or &H1 Xor Asc(cSn(2))
tmpByte = tmpByte Xor &H7D
cSn(18) = Chr(ckByte(tmpByte, 18))
tmpByte = mmSn(19) Xor vvSn(19) Or &H2 Xor Asc(cSn(1))
cSn(19) = Chr(ckByte(tmpByte, 19))
For i = 1 To 19
pSerial = pSerial & cSn(i)
Next i
operationSN = pSerial
End Function
Public Function ckByte(inByte As Byte, n As Integer) As Byte
Select Case Val(inByte)
Case 48 To 57
ckByte = inByte
Case 65 To 90
ckByte = inByte
Case 97 To 122
ckByte = inByte
Case Is < 48
ckByte = vvSn(n)
Case 58 To 64
ckByte = inByte + 8 + n
Case 91 To 96
ckByte = inByte + 7 + n
Case Else
ckByte = vvSn(n)
End Select
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -