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

📄 form1.frm

📁 对spn分组密码基于用同一个密钥加密后的周期的漏洞分析
💻 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 + -