当前位置: 高中信息技术 / 综合题
  • 1. (2018·嘉兴模拟) 【加试题】维吉尼亚(Vigenere)密码。如图所示,分别用行和列表示待加密的字符(明文)和当前字符的密钥,行和列的交叉点的字符即为加密后的结果(密文)。在加密时.密文与明文的字母大小写形式保持一致,如,明文字母为大写,则加密后的密文字母也为大写;当密钥长度不足时重复使用密钥。例如:当明文M=HellowWorld,密钥K=abc时,密文C=HfnplpYosnd。运算过程如下所示:

    明文:HelloWorld

    密钥:abcabcabca

    密文:HfnlpYosnd

    依据上述算法描述设计了如下VB程序。请回答下列问题:

    1. (1) 若明文是Jia,密钥是Pass,则输出的密文是

    2. (2) 请在画线处填上合适的代码。

      Const MIN_ASC=65        ‘字母”A”的ASCII值

      Function x2D(x As String)As String    ‘字符串小写转成大写

          Dim s As String,zf As String,i As Integer

          S=””

          For i=1 To Len(x)

            zf=Mid(x,i,1)

            If zf>=“a”And zf<=“z”Then

              s=s+    ①   

            Else

              s=s+ zf

            End If

          Next

          X2D=s

       End Function

       Private Sub Command1_Click()

          Dim M As String,K As String,C As String,flag As Boolean

          Dim i As Integer,t As Integer,ch As Integer,pos As Integer·

      As Integer

          M=Textl.Text     ‘明文

          K=Text2.Text     ‘密钥

          t=Len(K)

          K=X2D(K)        ‘将密钥全部转成大写

          C=“ ”         ‘加密后的结果

          For i=1 To Len(M)

            ch=Asc(Mid(M,i,1))

            flag=False

            If ch>=97 And ch<=122 Then ch=ch-32:flag=True

            pos=    ②       ‘密钥的字符位置值

            If pos=0 Then pos=t

            j=Asc(Mid(K,pos,1))        ‘密钥字符的ASCII值

            ch=ch-MIN_ASC

            j=j-MIN_ASC

            ch=    ③     

            ch=ch+MIN_ASC

            If flag Then ch=ch+32    ‘设置字母的大小写形式

            C=C & Chr(ch)

          Next i

          Text3.Text=C

      End Sub

       ② ③ 

微信扫码预览、分享更方便