
Dim m2 As String
Private Sub Command1_Click()
Dim flag(1 To 26) As Boolean
Dim num As Integer,t As Integer
Randomize
num = 1
Text3.Text = “”
For i = 1 To 26
flag(i) = False
Next i
Do While num <= 26
x = Int(Rnd * 26) + 97
If flag(t) = False Then
m2 = m2 + Chr(x)
num = num + 1
End If
Loop
Text3.Text = m2
End Sub
Private Sub Command2_Click()
Dim s As String, m As String, result As String
Dim k As String, c As Integer
s = Text1.Text
m = “abcdefghijklmnopqrstuvwxyz”
For i = 1 To Len(s)
k = Mid(s, i, 1)
If k >= ”A” And k <= “Z” Then
k = Chr(Asc(k) + 32)
End If
c = 1: continue = True
Do While
If k = Mid(m, c, 1) Then
continue = False
End If
c = c + 1
Loop
Next i
Text2.Text = result
End Sub
1)对待加密的字符进行判断,如果是英文字符的,则将该字符后移2位(如:字符“A”转换成“C”,字符“Z”转换成“B”,字符“a”转换成“c”,字符“z”转换成“b”),其他字符保持不变;
2)求出每个字符的ASCII码,然后用7位二进制来表示,比如“4”的ASCII码为十进制52,转换为7位二进制为“0110100”;
3)从左至右依次记为第1,2,3……7位,分别把第3,4,5位取反。即0变1,1变0,至此“0110100”变为“0101000”,将此二进制转换为ASCII码为40,对应的字符为左括号“(”,即“4”经过加密后得到加密字符为左括号“(”。
在文本框Text1中输入ASCII字符,单击“加密”按钮Command1,则在文本框Text2中显示经过加密的字符。程序界面如图所示,请完成下列问题。
Private Sub Command1_Click()
Dim s As String, ch As String s = Text1.Text
For i = 1 To Len(s)
ch = Mid(s, i, 1)
If ch >= "A" And ch <= "Z" Then
ElseIf ch >= "a" And ch <= "z" Then '让小写字母后移2位,代码略
End If
Text2.Text = Text2.Text +
Next i
End Sub
Function jm(x As String) As String
Dim a(1 To 7) As Integer, j As Integer, n As Integer, asc1 As Integer
asc1 = Asc(x)
n = 0
For j = 7 To 1 Step -1
If j = 3 Or j = 4 Or j = 5 Then a(j) = 1 - asc1 Mod 2
Else
a(j) = asc1 Mod 2
End If
n =
asc1 = asc1 \ 2
Next j
jm = Chr(n)
End Function
s= Text1.Text
s1=" "
For i=1 To Len(s)
c= Mid(s, i, 1)
If c>="A" And c<="Z" Then
t=(Asc©-asc("A")+25)Mod 26
c=Chr(t+ Asc("A"))
End If
s1=s1+c
Next i
Text2.Text=s1
s1=s1+c
在文本框Text1中输入“ABcd2XY”,执行上述程序段后,文本框Text2中输出( )
图 a
图 b
根据上述加密算法编写解密程序。程序在启动时读取密钥矩阵存入列表a中,根据程序提示,输入 密文,然后显示明文。运行界面如下图 c所示。
图 c
def getmm(x,n):
col = (x-1) % n
row = (x-1) //n
getmm = a[col*n+row]
if row % 2 == 1:
getmm =
return getmm n = 3
#存储密文数据,偶数位存储加密值,奇数位存储该数据在原文中的位置
#生成规模为 n*n 的密钥矩阵存入列表 a 中
mw=[]
a=[]
for i in range(n*n):
a.append(i+1)
p=input("请输入密文:") #2,1,6,2,10,3,12,4,10,5, t=0
k=0
for i in range(len(p)):
c=p[i]
if c!=",":
t=t*10+int(c)
else:
mw.append(t)
t=0 print("原文为:",end="")
yw=[]
for i in range(k//2): #对密文解密,结果存入列表 yw 中
yw.append(mw[2*i]-getmm(mw[2*i+1],n))
s=""
for i in range(k//2):
s=s+ #转换为字母输出
print(s)