某加密算法的明文和密钥均由英文字母组成,且密钥循环使用,其加密规则如下:
①明文字符与对应密钥的ASCII码转化为二进制后求异或(对应位相同时结果为0,对应位不同时结果为 1,如二进制1001与二进制1100的异或值为0101),并将异或结果转换为十进制p;
②如果处在奇数位,则将明文字符循环后移p个位置,否则将明文前移p个位置。移动过程中保持大小写不变。
最后把所得到的字符连接起来就是密文。
例如,密钥是“abc”,明文“d”的加密过程是:字符“d”的ASCII码表示为二进制是1100100,密钥“a”的ASCII码表示为二进制是1100001,两数进行异或结果是:0000101,转化为十进制为5,因为是第1个位置,所以把明文后移5个位置,则密文是“i”。
该加密过程使用VB来实现。具体功能设计如下:在Text1中输入明文,Text2中输入密钥,单击“开始加密”按钮Command1后将密文显示在Text3中,界面设计如图所示。
请回答以下问题:
(1)
如果密钥为“bc”,字符“d”加密后的密文为:(字母“a”的 ASCII 码为97)
(2)
请完善以下程序代码。
Private Sub
Command1_Click()
Dim s As String, sn As String
Dim i As Integer, t As Integer, u As Integer
Dim p As Integer, g As Integer
sn = ""
For i = 1 To Len(Text1.Text)
t = Asc(Mid(Text1.Text, i, 1))
If t >= Asc("a") Then
g = Asc("a")
Else
g = Asc("A")
End If
u = Asc(Mid(Text2.Text, (i - 1) Mod
Len(Text2.Text) + 1, 1))
p =
t = t - g
If i Mod 2 = 1 Then
t = (t + p) Mod 26
Else
t =
End If
sn = sn + Chr(t + g)
Next i
Text3.Text = sn
End Sub
Function txor(x As
Integer, y As Integer) As Integer 'x、y求异或并返回十进制
Dim a As Integer, b As Integer, r As Integer,
i As Integer
a = x: b = y
r = 1
For i = 1 To 7
If a Mod 2 <> b Mod 2 Then
a = a \ 2
b = b \ 2
r = r * 2
Next
i
End Function
答案: 【1】j
【1】txor(t,u)Mod26或txor(u,t)Mod 26【2】(t-p+26)Mod 26【3】txor=txor+r