友情提示:380元/半年,儿童学编程,就上码丁实验室。
VB代码:
(2015年10月_浙江)17.某数据加密方法描述如下:
(1)以字节为单位进行加密处理;
(2)将1个字节的8位二进制数分割成前4位与后4位两个二进制数;
(3)分别将上述两个4位二进制数转换为十进制数;
(4)将每个十进制数转换为1个加密字符,对应的“密码表”如下:
值(十进制) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
加密字符 | I | l | i | k | e | C | H | N | P | 0 | s |
值(十进制) | 11 | 12 | 13 | 14 | 15 |
加密字符 | t | c | a | r | d |
小明按照上述方法,设计了一个字符串(仅包含ASCII字符)加密的VB程序,功能如下:单击“加密”按钮Commandl,程序依次将文本框Textl中每个字符的ASCII码值作为1个字节转换为两个加密字符,连接这些加密字符,最后在文本框Text2中输出加密结果。下表显示了字符串中一个字符的加密过程:
程序运行效果如第17题图所示。
实现上述功能的VB程序如下:
(1)请在划线处填入合适代码。
Private SubCommand1_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
①
For i = 1 To n
a =Asc(Mid(s, i, 1))
b1 =a 16
b2 =a Mod 16
ss =ss + Code2Char(b1) + Code2Char(b2)
Next i
Text2.Text = ss
End Sub
‘十进制值转换为加密字符的函数
Function Code2Char(cAs Integer) As String
Dim s As String
s = “IlikeCHNpostcard”
Code2Char = ②
End Function
(2)若将“密码表”中值为“0”对应的加密字符“I”改成“i”,加密后的密文可能无法解密,原因是 。
参考答案:
(1)①n = Len(s)或 n = Len(Text1.Text) ②Mid(s,c + 1, 1)
(2)加密字符i对应两个值0,2
Python代码:
def code2char(c):
s = “IlikeCHNpostcard”
return s[c]
s=input(‘请输入明文:n’)
n = len(s)
ss=”
for i in range(n):
a=ord(s[i])
b1=a//16
b2=a%16
ss=ss + code2char(b1) + code2char(b2)
print(‘密文为:’+ ss)
Python代码运行结果:
请输入明文:
This is an example!
密文为:CeHpHoNkiIHoNkiIHlHriIHCNpHlHaNIHcHCil
>>>