【加密与解密问题】某数据加密方法描述如下:
⑴以字节为单位进行加密处理;
⑵将1个字节的8位二进制数分割成前4位与后4位两个二进制数;
⑶分别将上述两个4位二进制数转换为十进制数;
⑷将每个十进制数转换为1个加密字符,对应的“密码表”如下:
值(十进制)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
加密字符
I
l
i
k
e
C
H
N
p
o
s
t
c
a
r
d
小明按照上述方法,设计了一个字符串(仅包含ASCⅡ字符)加密的VB程序,功能如下:单击“加密”按钮Command1,程序依次将文本框Text1中每个字符的ASCⅡ码值作为1个字节转换为两个加密字符,连接这些加密字符,最后在文本框Text2中输出加密结果。下表展示了字符串中一个字符的加密过程:
实现上述功能的VB程序如下: 程序运行效果如图所示。
(1)
请在划线处填入合适的代码。
Private
Sub Command1_Click ( )
Dim n
As Integer, s As String, i As Integer, ss As String
Dim a
As Integer ‘存储加密前字符的 ASCII码
Dim b1
As Integer, b2 As Integer ‘分别存储分割、转换后的两个十进制数
s =
Text1. Text
n =
Len (s)
For i
= 1 To n
a = ①
b1 = a\16
b2 =a Mod 16
ss= ss + Code2 Char(b1) + Code2 Char(b2)
Text2. Text=ss
Next
i
End
Sub
‘十进制值转换为加密字符的函数
Function
Code 2 Char(c As Integer) As string
Dim s
As String
s = “IlikeCHNpostcard”
Code2Char
= ②
End
Function
① ②
(2)
若将“密码表”中值为“0”对应的加密字符“I”改成“i”,加密后的密文可能无法解密,原因是。
答案: 【1】ASC(mid(s, i, 1))【2】Mid(s, c+1, 1)
【1】i同时对应两个十进制数,不具备唯一性,无法解密。