试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:困难

浙江省杭州市夏衍中学2015-2016学年高二上学期期末考试技术试题(信息技术部分)

某数据加密方法描述如下:

⑴以字节为单位进行加密处理;

⑵将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

0

s

t

c

a

r

d

小明按照上述方法,设计了一个字符串(仅包含ASCII字符)加密的VB程序,功能如下:单击“加密”按钮Commandl,程序依次将文本框Textl中每个字符的ASCII码值作为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 

For i = 1 To n

  a = Asc(Mid(s, i, 1))

  b1 = a \ 16

  b2 = a Mod 16

  ss = ss + Code2Char(b1) + Code2Char(b2)

Text2.Text = ss

Next i

End Sub

'十进制值转换为加密字符的函数

Function Code2Char(c As Integer) As String

Dim s As String

s = "IlikeCHNpostcard"

Code2Char =

End Function

(2)、若将“密码表”中值为“0”对应的加密字符“I”改成“i”,加密后的密文可能无法解密,原因是 。
举一反三
【根据宁波效实中学2012学年第一学期高一信息技术期末试卷改编】将一个十进制正整数x转换成十六进制数的方法和转换成二进制类似,反复除16取余法,它的算法如下

    第一步:x被除16取余数r1,r1是所求的十六进制数的一个数(第一次就是个位数);

    第二步:r1转换成十六进制数的一个基数并转换成字符,追加到十六进制数S的左边;

    第三步:求出x被除16的商x1;

    第四步:对x1重复(1)、(2)、(3)过程,直至商为0;

    第五步:最后的S即为所求的十六进制数;

下列Visual Basic程序的功能是将一个十进制正整数x转换成十六进制数。界面如图所示,在文本框Text1中输入一个十进制数制,单击“十进制转十六进制按钮”(Command1)后,在文本框Text2中输出转换的结果。 相应的Visual Basic程序如下:

Private Sub Command1_Click()

  Dim s As String, r As Integer

  dec = val(Text1.Text)                  ’dec得到一个十进制整数,例如:255;

  base = 16                               ’base表示16

     s = ""                                ’s变量存放要转换到的十六进制整数;

     Do While dec <> 0

          r =        ①   

          If r >= 10 Then                     ’如果base>10进制,r可能>10;

             s = Chr(65 + (r - 10)) + s   ’Chr (65)="A", 16进制数A对应10;

          Else                            ’Chr(66)="B", 16进制数B对应11;
             s = Str(r) + s      ‘余数r<10时,十进制数和十六进制基数相同;
          End If                   ‘Chr (65 +( r - 10))或str(r)在s左边,实现了反次序输出;
          dec =     ②              
    Loop
   Text2.Text = s
End Sub
返回首页

试题篮