成熟丰满熟妇高潮XXXXX,人妻无码AV中文系列久久兔费 ,国产精品一国产精品,国精品午夜福利视频不卡麻豆

您好,歡迎來到九壹網。
搜索
您的當前位置:首頁2020年高考浙江版高考信息技術 模擬演練 (27)

2020年高考浙江版高考信息技術 模擬演練 (27)

來源:九壹網
?高考復習參考資料

第4節(jié) 加密問題

模擬演練

1.在密鑰加密方式中,可以通過自己指定的一個密鑰將字符串加密,而解密也必須通過密鑰。本題采用的具體實現方法是將字符串的每個字符轉換為ASCII碼,順序加上密鑰中的對應數字后轉換回ASCII字符得到密文(當密鑰位數不夠時重新從第一位循環(huán))。

以原文:Hello,密鑰:123為例,“H”轉換為ASCII碼后加上密鑰的第一個數字1,再轉換回ASCII字符,得到“I”;“e”轉換為ASCII碼,加上密鑰的第二個數字2,轉換回ASCII得到“g”;“l(fā)”則加上密鑰的第三個數字3得到“o”;隨后原文又出現“1”,但是密鑰中的數字已經用完了,則密鑰從頭開始,加上“1”,得到“m”;“o”則得到“q”,最后產生密文“Igomq”。 具體程序如下,但是有兩處加框的代碼錯誤,請改正: Dim code As String, key As String Dim i As Integer, res_code As String Dim l_code As Integer, l_key as Integer Private Sub Command1_Click( )’加密程序 code = Text1.Text key = Text2.Text l_code =Len(code) l_key =Len(key) res_code = “”

For i = 1 Tol_key ’(1) c =Asc(Mid(code, i, 1))

k =Val(Mid(key,i Mod l_key,1) )’(2) res_code = res_code +Chr(k + c) Next i

Text3.Text = res_code End Sub

高考加油,高考加油,高考加油

高考復習參考資料

Private Sub Command2_Click( ) ’解密程序略 End Sub

答案 (1) l_code (2)Val(Mid(key,(i-1) Mod l_key+1,1) )

解析 程序的功能是通過給原文中每一個字符的ASCII值加上一個數字得到密文,而這個數字需要循環(huán)地截取密鑰來獲取,本題的關鍵是如何做到循環(huán)截取密鑰。在程序中,l_code表示原文長度,l_key表示密鑰長度,res_code用于存儲生成的密文。接下來開始循環(huán)截取原文的每一個字符,每次截取后進行轉換,所以循環(huán)的范圍是1到l_code。在循環(huán)體中,c的值表示截取下來的原文字符的ASCII碼,k用于存儲轉換后的密文字符ASCII碼,同時當i的值循環(huán)至大于l_key的時候,能夠自動回到密鑰字符串key的第一個位置重新截取,這里利用了一個Mid函數實現,每次截取的位置為(i-1) Mod l_key+1,如此便可循環(huán)截取,隨后利用res_code變量將兩數相加再轉換回字符便得到對應的密文字符。

2.小明編寫了一個字符串加密程序,功能如下:在文本框Text1中輸入明碼,單擊“加密”按鈕Command1后,在文本框Text2中顯示加密后的密文,運行界面如下圖所示。

加密算法如下:

1)將明碼中每個字符的八位二進制ASCII碼(不足八位的左端補0,湊足八位)分成兩段(左4位一段,右4位為另一段),如字符“C”的二進制ASCII值為01000011,分段后為0100,0011;

2)將高位段(左邊4位)左移一位,并將原第一位數碼移到第4位(如0100轉化為1000),再轉化為十六進制數(如1000化為8);

3)對另一段(右4位)執(zhí)行2)所示算法,如0011→0110→6;

4)順次連接兩位十六進制數,得到該字符的暗碼,如“C”的暗碼為“86”; 5)將每個字符的暗碼按照明碼的順序連接。

高考加油,高考加油,高考加油

高考復習參考資料

實現上述功能的VB程序如下,請回答下列問題: (1)按照加密算法,字符“J”的密文是 ; (2)請在劃線處填入合適代碼。 Private Sub Command1_Click() Dim i As Integer, j As Integer

Dim m As Integer, k As Integer, c As String Dim 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(d() As Integer) As String

Dim s As Integer, i As Integer, str1 As String, ch As String str1 = “01234567ABCDEF”: s = 0: ch =“” For i = 1 To 8 s = s * 2 + d(i) If i = 4 Then

ch = Mid(str1,s+1,1) s = 0 End If Next i ③ End Function

答案 (1)85 (2)①k=8 ②d(j+4)=d(j+5) ③btoh = ch + Mid(str1,s+1,1) 解析 (1)字母J的八位二進制ASCII碼為01001010,分別對高4位和低4位移位得到1000和0101,對應暗碼為“85”。(2)第①空所在代碼段的作用是把十進制數m轉換成二進制數存儲在數組d中,第②空所在代碼段的作用是分別對高4位和低4位進行移位操作,第③空所在代碼段的作用是將數組元素中的二進制數轉換成對應的十六進制數,在For循環(huán)體內部將高4位對應的暗碼存儲在ch中,循環(huán)結束后,再將低4位對應的暗碼拼接起來,即btoh = ch + Mid(str1,s+1,1)。 3.某字符串(字節(jié)數為3的倍數)編碼規(guī)則如下:

(1)將該字符串內碼分成3個字節(jié)一組,順次連接后得到24位二進制數; (2)將得到的24位二進制數字按每6位一組分成4組,每組6個位; (3)在每組數字前補上兩個0,得到4個字節(jié)的二進制數; (4)將(3)中得到的四個二進制數分別轉換為十進制數;

高考加油,高考加油,高考加油

高考復習參考資料

(5)將每個十進制數轉換為1個加密字符,對應的“密碼表”按數值由小到大依次為“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn opqrstuvwxyz01234567+/”。

小明按照上述方法,設計了一個字符串(僅包含ASCII字符)加密的VB程序,功能如下:單擊“加密”按鈕Command1,程序依次將文本框Text1中每3個字符的ASCII碼值作為4個字節(jié)轉換為四個加密字符,連接這些加密字符,最后在文本框Text2中輸出加密結果。程序運行效果如下圖所示。

實現上述功能的VB程序如下:

(1)在上述加密算法步驟(4)中,得到的十進制數最大是 。 (2)實現上述功能的VB程序如下。請在劃線處填入合適代碼。 Function Code2Char(c As Integer) As String Dim s As String

s=“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567+/”

Code2Char= ① End Function

Private Sub Command1_Click() ’加密過程

Dim n As Integer, s As String, i As Integer, ss As String

Dim a1 As Integer,a2 As Integer,a3 As Integer ’存儲加密前字符的ASCII碼

Dim b1 As Integer,b2 As Integer’分別存儲分割、轉換后的前兩個十進制數 Dim b3 As Integer,b4 As Integer’分別存儲分割、轉換后的后兩個十進制數 s = Text1.Text : n= Len(s) : ss =“” For i = 1 To n ② a1 = Asc(Mid(s, i, 1))

高考加油,高考加油,高考加油

高考復習參考資料

a2 = Asc(Mid(s, i+1,1)) a3 = Asc(Mid(s, i+2,1)) b1 = a1 \\ 4

b2 = (a1 Mod 4) * 16 + (a2 \\ 16) b3 = ③ b4 = a3 Mod

ss = ss + Code2Char(b1) + Code2Char(b2) + Code2Char(b3) + Code2Char(b4) Next i

Text2.Text = ss End Sub

答案 (1) 63 (2)①Mid(s,c+1,1) ②Step 3 ③ (a2 Mod 16) * 4 + (a3 \\ ) 解析 (1)步驟(4)中得到的十進制數對應的二進制數的高2位都是0,則最大值為00111111B,轉換成十進制數為63。

(2)十進制數c最小值是0,而密碼表字符串s的最小下標是1,故Code2Char=Mid(s,c+1,1)。明文字符串中每個字符占1個字節(jié),每3個字符為一組,依次存儲在變量a1,a2,a3中,故循環(huán)變量i每次遞增3。本題的難點在于理解分割二進制數的方法,我們把題目效果圖中的第一組明文的轉換過程分析如下圖:

看懂變量a1,a2,a3和b1,b2,b3,b4的轉換關系,再模仿程序中已知的代碼,應該能填出第③空。

4.某日期加密授權碼生成方法描述如下:

(1)授權碼由10位字符組成,前8位為日期的密文,后2位為驗證碼;

(2)取日期的第1位字符,若該字符第一次出現,則直接取其對應加密字符,否則取下一個不重復的加密字符。按此操作,依次取出該日期余下各位對應的加密字符;

高考加油,高考加油,高考加油

高考復習參考資料

(3)求出所有日期字符數值的和,將和除16取余加1得到一位驗證碼字符;若和不小于16,則將和除16取整加1得到另一位驗證碼字符,否則另一位驗證碼字符為“X”。取出驗證碼重復時,處理規(guī)則與(2)相同。加密(驗證碼)字符對應表如下:

值 (十進制) 加密 (驗證碼) 字符

小明設計了一個生成8位日期(YYYYMMDD格式)授權碼的VB程序。程序功能如下:在文本框Text1中輸入一個8位有效日期,單擊“生成授權碼”按鈕Command1,在標簽Label2中顯示出該日期的授權碼。運行效果如圖所示。實現上述功能的VB程序段如下:

K n G j L t W b O a P H Z q Y c 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

(1)請在劃線處填入合適代碼: Dim f(0 To 15) As Integer Const Code = “KnGjLtWbOaPHZqYc” Private Sub Command1_Click() Dim rq As String, sq As String

Dim c As Integer, i As Integer, d As Integer For i = 0 To 15 f(i) = 0 Next i

rq = Text1.Text sq=“”:d = 0 If Len(rq) <> 8 Then

高考加油,高考加油,高考加油

高考復習參考資料

Label2.Caption =“請輸入 8 位日期!” Else

For i = 1 To 8

c = Val(Mid(rq, i, 1)) d = d + c

sq = ① +sq Next i

If d >= 16 Then

yz = GetChar(d Mod 16 + 1) + GetChar(d\\16 + 1) Else

yz = GetChar(d Mod 16 + 1) + “X” End If

Label2.Caption = sq + yz End If End Sub

’獲取不重復的加密字符

Function GetChar(x As Integer) As String Dim flag As Boolean flag = False

Do While flag = False f(x) = f(x) + 1 If f(x) = 1 Then ② f(x) = f(x) + 1 flag = True Else

x = (x + 1) Mod 10 End If Loop

高考加油,高考加油,高考加油

高考復習參考資料

End Function

(2)若輸入的日期是“20170818”,則該授權碼的驗證碼字符是 。 答案 (1)①GetChar(c) ②GetChar=Mid(Code,x+1,1) (2)aL0jbn KGZt

解析 (1)本題算法思路比較清晰,根據題目說明,結合樣例,不難得出代碼。需要注意的是前8位日期對應的加密字符是逆序拼接,后2位驗證碼是順序拼接的,對應代碼為sq=GetChar(c)+sq和Label2.Caption=sq+yz。GetChar(x As Integer)函數用來獲取不重復的加密字符,程序用數組f來標記加密字符未被使用過,開始令數組f的所有元素值均為0,運行函數時令f(x)=f(x)+1,再判斷f(x)是否等于1,若等于1,則表示該加密字符未被使用過,返回該加密字符(注意x的最小值為0,而加密字符串的下標從1開始,故GetChar=Mid(Code,x+1,1));若f(x)>1,則表示該加密字符已經被使用過了,x要后移一位,為防止x越界,可以對16求余數,即x=(x+1)Mod 16。(2)輸入日期“20170818”對應加密字符串為“aL0jbnKG”,數字和為27,GetChar(27 Mod 16+1)為“Z”,GetChar(d\\16+1)為“t”。

5.下面是一種加密解密的方法。當輸入一串進制數字,用空格分離時,每個進制數字的數值與字母A…Z成一一對應關系。小明只要將這串數字的數值求出,然后將數字值轉換成相應的字母即破解密碼得到明文。若輸入的進制數值超出1~26范圍,則當成非法數值。表中數值100、153屬于非法數值,用字符“*”表示,在解密過程中非法字符不予處理。

密文 對應數值 明文 1100100 100 * 11 3 C 1000 8 H

1001 1110 1 9 I 14 N 1 A 10011001 153 * 高考加油,高考加油,高考加油

高考復習參考資料

(1)根據題意,若密文為16進制的“68 17 9 E 1F ”,則其明文為 。

(2)實現上述功能的VB程序如下,請在劃線處填上合適的代碼。 Private Sub Command1_Click() ’密文解密過程 Dim s As String, yw As String

Dim n As Integer,i As Integer,k As Integer,value As Integer Dim flag As Boolean s =Text1.Text yw =“” flag = True

k = Val(Text4.Text) ’k為密文的進制 n = Len(s) value = 0 For i = 1 To n t = Mid(s, i, 1) If flag Then

If (t <> “”)Then

If t >=“0” And t <= “9” Then value = ①

Else If t >=“A” And t <= “F” Then value = value*k+Asc(t)-Asc(“A”) + 10 End If Else

高考加油,高考加油,高考加油

高考復習參考資料

flag = False If value <=26 Then yw = ② Else

yw = yw + “*” End If value = 0 End If Else

If t >=“0” And t <=“9” Then value = Asc(t) - Asc(“0”) flag = True

Else If t >= “A” And t <= “F” Then value = Asc(t) - Asc(“A”)+ 10 flag = True End If End If Next i If flag Then

If value < = 26 Then

yw = yw + Chr(Asc(“A”) + value - 1) Else

yw = yw + “*” End If End If

Text2.Text = yw End Sub

Private Sub Command2_Click()’密文加密過程

Dim s As String, yw As String, t As String, key As String

高考加油,高考加油,高考加油

高考復習參考資料

Dim i As Integer, n As Integer, k As Integer, m As Integer key = “01234567ABCDEF” s = Text2.Text n = Len(s) yw = “”

k = Val(Text4.Text) For i = 1 To n t = Mid(s, i, 1) m = ③

If m >= 1 And m <= 26 Then t =“” Do While m > 0

t = Mid(key,(m Mod k + 1) , 1) + t ④ Loop

mw = mw + t + “ ” End If Next i

Text3.Text = mw End Sub 答案 (1)*WIN*

(2)①value*k+Asc(t)-Asc(“0”)③Asc(t)-Asc(“A”)+1 ④m=m\\k 解析 (1)

密文 68 17 9 E 14 N 1F 31 *

②yw+Chr(Asc(“A”)+value-1)

對應數值 104 23 9 明文 * W I (2)①該空考查進制的轉換。這種情況考慮了轉換的是數字,并且要把一串沒空格

高考加油,高考加油,高考加油

高考復習參考資料

的數字轉成10進制數,所以此空為value*k+Asc(t)-Asc(“0”)。

②該空的作用是將value的值轉換為相應的字母,因為最后要輸出yw的值,因此該空為yw+Chr(Asc(“A”)+value-1)。

③m用來下文檢測提取出來的“t”是不是對應的字母,即將“t”轉換為k進制的數字或字母,所以該空填Asc(t)-Asc(“A”)+1。

④該空考查將k進制轉換為二進制,所以該空為“m=m\\k”。

高考加油,高考加油,高考加油

因篇幅問題不能全部顯示,請點此查看更多更全內容

Copyright ? 2019- 91gzw.com 版權所有 湘ICP備2023023988號-2

違法及侵權請聯系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市萬商天勤律師事務所王興未律師提供法律服務