题目

在美国国家信息交换码中,ASCII值从32到127是可以打印并显示的字符,把这96个字符随机调整次序,生成密码本。根据输入的密钥和明文,单击“加密”按钮Command1,输出密文。基本算法如下: 1)用数组mab分别记录1~96个字符的ASCII值,用数组zm记录对应字符在密码本中位置,如mab(9)=65,表示密码本中第9个字符是“A”,则对应的zm(65)=9; 2)把密钥中每个字符的ASCII值的各个数字进行累加(如Hi分别为(7+2)+(1+0+5)),将累加的和除以9取余数后加7,作为将密码本转换成二维表的列数; 3)每个明文在转换后二维表中位置作为密文,该位置是用十六进制表示的行号和列号。 程序运行的界面如下图所示: 实现上述功能的VB程序如下,请回答以下问题: (1) 若输入密钥为“AB”,则根据算法及密码本,字母“A”加密后的密文是。 (2) 请在划线处填入合适的代码。 Dim Mab(96) As Integer        '存储密码本中每个字符的ASCII值 Dim zm(127) As Integer         '存储ASCII值32至127的字符在密码本数组mab中的下标 Private Sub Form_Load()     '产生密码本及96个字符在密码本中位置,代码略。 End Sub Function p(s As String) As Integer     Dim i As Integer, t1 As Long     Dim sum As Integer, s1 As String     t1=0     i=1     Do While i<=Len(s)         s1=Mid(s, i, 1)         t1=Asc(s1)                 i=i+1     Loop     p=sum Mod 9+7 End Function Private Sub Command1_Click()     Dim i As Integer, t As Integer, hang As Integer     Dim s As String, s1 As String, Lie As Integer     List1.Clear     s1=Text1.Text     t=p(s1)     Label5.Caption= “将密码本换成一张”+Str(t)+ “列的二维表”     i=1     Do While i<=96         s=s+Chr(Mab(i))+ “”         If i Mod t=0 Or i=96 Then             List1.AddItem s             s= “”         End If         i=i+1     Loop     wz= “123456789ABCDEF”     s=Text2.Text     For i =1 To Len(s)         s1=Mid(s, i, 1)                 hang=(t1-1)\t+1         lie=(t1-1) Mod t+1         s2=     Next i     Text3.Text=s2 End Sub 答案: 【1】23 【1】sum=sum+t1\10+t1 Mod 10【2】t1=zm(Asc(s1))【3】s2 + Mid(wz, hang, 1)+ Mid(wz, lie, 1)
信息技术 试题推荐
最近更新