小明决定以ROT-13为基础制定新的ROT-n,即每次回转不是13位,而是n位。因此他引入了11位数字密钥和字符位置来计算n的值,并扩大加密范围,使得大小写字母和数字都能加密,从而达到加密效果增强的目标。具体规则如下:
(1)字符在奇数位置上n的值即当前对应密钥值,偶数位置上n的值为当前段密钥中已经出现的所有数字之和。
(2)数字字符在“0”到“9”之间回转,即超过“9”部分返回“0”开始继续计算;大写字母在“A”到“Z”范围内回转,小写字母在“a”到“z”范围内回转,其它字符不变。例如:当密钥为“123”时,对应加密方式如下:
| 第一段 | 第二段 | 第三段 | … … | ||||||
字符位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
密钥 | 1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 | |
n的值 | 1 | 3 | 3 | 1 | 2 | 6 | 1 | 3 | 3 | |
原文 | H | e | 1 | 1 | o | 2 | 0 | 1 | 9 | |
密文 | I | h | o | m | q | 8 | 1 | 4 | 2 |
程序界面如下图所示:
程序代码如下:
Private Sub Command1_Click()
Dim i, z, m, js As Integer
Dim s, c, h, t As String
Const my ="14159265358"
Text2.Text = " "
s = Text1.Text
z=1
For i.= 1 To Len(s)
①
If z=12 Then z=1:js =0
m = Val(Mid(my, z, 1))
js =js+m
If ② Then n =js Else n =m
If c >= "0" And c<= "9" Then
h= CStr((Val©+ n)Mod 10)ElseIf c >="A" And c <= "Z" Or c>= "a" And c<="z" Then
t = Chr(Asc©+ n Mod 26)If c>="A" And c <="Z" Then
If Not(t >="A" Andt<="Z")Then h =Chr(Asc(t)-26)Else h =t
Else
If Asc©+n Mod 26 >122 Then h=Chr((Asc©+n Mod 26)-26)Else h =t
End If
Else
h=cEnd If
Text2.Text = Text2.Text +h
③
Next iEnd Sub
请回答下列问题:
(1)解密过程为加密过程的逆运算,即由密文字符向前推导n位寻找原字符,现已知密钥为123,密文“WEjpqj”(无双引号)对应的原文是______________。
(2)程序功能实现则代码中划线部分请填入合适代码
①处代码______________;②处代码______________;③处代码______________。
同类型试题
y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2
y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2