小明编写了一个字符串加密程序,功能如下:在文本框Text1中输人明码,单击“加密”按钮Command1后,在文本框Text2 中显示加密后的密文,运行界面如图所示。加密算法如下:
①将明码中每个字符的八位二进制ASCII码(不足八位的左端补0,凑足八位)分成两段(左4位一段,右4位为另一段),如字符“C”的二进制ASCI值为01000011,分段后为0100,0011 ; ②将高位段(左边4位)左移一位,并将原第一位数码移到第4位(如0100转化为1000),再转化为十六进制数(如1000 化为8); ③对另一段(右4位)执行2)所示算法,如0011→0110→6; ④顺次连接两位十六进制数,得到该字符的暗码,如“C”的暗码为“86”; ⑤将每个字符的暗码按照明码的顺序连接。 实现上述功能的VB程序如下,请回答下列问题: Private Sub Command1_Click() Dim i As Integer, j As Integer, m As Integer, k As Integer Dim c As String, x As Integer, y As Integer Dim d(1 To 8)As Integer '数组d存储字符ASCII码二进制从左到右的各位数码 Dim mw As String 'mw存储暗码 mw = " " For i=1 To Len(Text1. Text) c= Mid(Text1. Text, i, 1) For j=1 To 8 d(j)=0 Next j m= Asc(c) ① Do While m>0 d(k)=m Mod 2 m=m\2 k=k-1 Loop x=d(1) : y=d(5) For j=1 To 3 d(j)=d(j+1) ② Next j d(4)= x:d(8)=y mw= mw十btoh(d) Next i Text2. Text= mw End Sub '以下函数是将数组元素中的二进制数转换成对应的十六进制数 Function btoh(m() As Integer) As String '将数组m作为函数的参数 Dim s As Integer, i As Integer Dim str As String, ch As String str=" " s=0 : ch=" " For i=1 To 8 s=s * 2+m(i) If i=4 Then ch= Mid(str, s+1, 1) s= 0 End If Next i ③ End Function
(1)
按照加密算法,字符“J”的密文是;
(2)
请在划线处填入合适代码。
① ② ③
答案: 【1】85
【1】k=8【2】d(j+4)=d(j+5)【3】btoh=ch+Mid(str, s+1, 1)