📄 form1.frm
字号:
VERSION 5.00
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 7065
ClientLeft = 60
ClientTop = 450
ClientWidth = 9885
LinkTopic = "Form1"
ScaleHeight = 7065
ScaleWidth = 9885
StartUpPosition = 3 'Windows Default
Begin VB.CommandButton Command1
Caption = "加密"
BeginProperty Font
Name = "MS Sans Serif"
Size = 13.5
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 855
Left = 2880
TabIndex = 2
Top = 1800
Width = 1695
End
Begin VB.TextBox Text1
Height = 615
Left = 4920
TabIndex = 1
Top = 480
Width = 3615
End
Begin VB.Label Label2
Alignment = 2 'Center
BeginProperty Font
Name = "MS Sans Serif"
Size = 13.5
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 855
Left = 480
TabIndex = 3
Top = 3120
Width = 8895
End
Begin VB.Label Label1
Caption = "请输入任意八位的二进制数明文"
BeginProperty Font
Name = "MS Sans Serif"
Size = 13.5
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 975
Left = 480
TabIndex = 0
Top = 480
Width = 4695
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim K As Long
Dim K5 As Long
Dim k0 As String
Dim k1 As String
Dim k2 As String
Dim k3 As String
Dim k4 As String
Dim p As String
Dim p1 As String
Dim p2 As String
Dim p3 As String
Dim p4 As String
Dim p5 As String
Dim p6 As String
Dim p7 As String
Dim q1 As String
Dim q2 As String
Dim q3 As String
Dim q4 As String
Dim q5 As String
Dim q6 As String
Dim q7 As String
Dim q8 As String
Dim q9 As String
Public j As Double
Private Sub Command1_Click()
Command1.Enabled = False
Label2.Caption = ""
p = Text1.Text
If K < 1048576 Then
cipher (p)
'K = K + 1
End If
End Sub
Public Function DEC_to_BIN(K As Long)
K5 = K
Dim z As String
z = "00000000000000000000"
Dim z1 As Integer
Dim DEC As String
'DEC = ""
If K5 = 0 Then
k1 = "00000000"
k2 = "00000000"
k3 = "00000000"
k4 = "00000000"
Else
Do While K5 > 0
DEC = CStr(K5 Mod 2) & DEC
K5 = K5 \ 2
Loop
z1 = Len(DEC)
If z1 < 20 Then
DEC = Mid(z, 1, 20 - z1) & DEC
End
k1 = Mid(DEC, 1, 8)
k2 = Mid(DEC, 5, 8)
k3 = Mid(DEC, 9, 8)
k4 = Mid(DEC, 13, 8)
End If
End If
'K = K + 1
End Function
Public Function Scipher(p2 As String) As String
If p2 = "0000" Then
q9 = "1110"
End If
If p2 = "0001" Then
q9 = "0100"
End If
If p2 = "0010" Then
q9 = "1101"
End If
If p2 = "0011" Then
q9 = "0001"
End If
If p2 = "0100" Then
q9 = "0010"
End If
If p2 = "0101" Then
q9 = "1111"
End If
If p2 = "0110" Then
q9 = "1011"
End If
If p2 = "0111" Then
q9 = "1000"
End If
If p2 = "1000" Then
q9 = "0011"
End If
If p2 = "1001" Then
q9 = "1010"
End If
If p2 = "1010" Then
q9 = "0110"
End If
If p2 = "1011" Then
q9 = "1100"
End If
If p2 = "1100" Then
q9 = "0101"
End If
If p2 = "1101" Then
q9 = "1001"
End If
If p2 = "1110" Then
q9 = "0000"
End If
If p2 = "1111" Then
q9 = "0111"
End If
End Function
Public Function cipher(p As String) As String
Dim i As Integer
i = 1
j = 0
p7 = "00000000"
If p = "" Then
MsgBox "请输入八位二进制数!"
End
Else
If Len(p) < 8 Then
p = Mid(p7, 1, 8 - Len(p)) & p
End If
DEC_to_BIN (K)
p5 = p
Do While p <> p6 '-----------------------如果加密后密文与明文不相同则继续加密
'-------------------------------------------用加密法则进行加密
Do While i < 5
If i = 1 Then
p1 = p5 Xor k1
End If
If i = 2 Then
p1 = p5 Xor k0
End If
If i = 3 Then
p1 = p5 Xor k0
End If
If i = 4 Then
p1 = p5 Xor k0
End If
If Len(p1) < 8 Then
p1 = Mid(p7, 1, 8 - Len(p1)) & p1
End If
'-----------------------------------------s盒加密
If i < 4 Then
p2 = Mid(p1, 1, 4)
Scipher (p2)
p3 = q9
p2 = Mid(p1, 5, 4)
Scipher (p2)
p4 = q9
p1 = p3 & p4
End If
'-'------------------------------------------p盒加密
If i < 3 Then
q1 = Mid(p1, 5, 1)
q2 = Mid(p1, 2, 1)
q3 = Mid(p1, 6, 1)
q4 = Mid(p1, 8, 1)
q5 = Mid(p1, 3, 1)
q6 = Mid(p1, 7, 1)
q7 = Mid(p1, 4, 1)
q8 = Mid(p1, 1, 1)
p5 = q1 & q2 & q3 & q4 & q5 & q6 & q7 & q8
End If
If i = 1 Then
k0 = k2
End If
If i = 2 Then
k0 = k3
End If
If i = 3 Then
p5 = p1
k0 = k4
End If
If i = 4 Then
p5 = p1
End If
i = i + 1
Loop
i = 1
j = j + 1
p5 = p1
p6 = p1 '-----------输出一次加密后的密文
Loop
Label2.Caption = "明文使用密钥" & K & "加密了" & j & "次得到了原明文"
'------------------------找到了一个j使得对于明文加密了j次得到了原明文
If p = p5 Then
Command1.Caption = "继续加密"
Command1.Enabled = True
K = K + 1
p5 = ""
p6 = ""
End If
End If
End Function
Private Sub Form_Load()
K = 48574
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -