编写解密的VB程序,功能如下:在文本框Text1中输入密文,单击“解密”按钮Command1,在文本框Text2中显示去重后的文本,并在标签Label1中显示明文。程序运行界面如下图所示。
Private Sub Command1_Click()
Dim s1 As String, s2 As String, c As String, mw As String
Dim i As Integer
s1 = Text1.Text
s2 = Mid(s1, 1, 1)
For i = 2 To
c = Mid(s1, i, 1)
If c >= "A" And c <= "Z" Then
If Then s2 = s2 + c
Else
s2 = s2 + c
End If
Next i
mw = " "
i = 6
Do While i <= Len(s2)
mw = mw+Mid(s2, i, 1)
Loop
Text2.Text = s2
Label1.Caption = mw
End Sub
1)将明文中每个字符用8位二进制ASCII码(不足八位的左端补0,凑足八位)表示;如“A”的二进制ASCII码值为01000001;
2)对8位二进制编码进行取反码(0变1,1变0)操作,如01000001的反码是10111110;
3)将8位二进制反码用2位十六进制表示,得到该字符的密文;
4)将每个字符的密文按照明文的倒序连接。
实现上述功能的VB程序如下:
Private Sub Command1_Click()
Dim i As Integer, j As Integer, m As Integer, k As Integer
Dim c As String, x As Integer, y As Integer
Dim d(1 To 8) As Integer '数组d存储字符ASCII码二进制从左到右的各位数码
Dim mw As String 'mw存储密文
mw = ""
For i = 1 To Len(Text1.Text)
c = Mid(Text1.Text, i, 1)
For j = 1 To 8
‘I处
Next j
m = Asc(c)
k = 8
Do While
‘II处
d(k)= ①
m = m \ 2
k = k - 1
Loop
mw = btoh(d) + mw
Next i
Text2.Text = mw
End Sub
Function btoh(m() As Integer) As String
′自定义函数是将m数组中的二进制数转换成对应的十六进制数
Dim s As Integer, i As Integer
Dim str As String, ch As String
str = "0123456789ABCDEF"
s = 0: ch = ""
For i = 1 To 8
s = s * 2 + m(i)
If ② Then
btoh =btoh+ Mid(str, s + 1, 1)
s = 0
End If
Next i
End Function
阅读分析程序代码,请回答下列问题:
① ②