其8位日期加密授权码生成方法描述如下:
①授权码由9位字符组成,前三位为日期的密文,最后1位为验证码;
②日期的最后1位数字k(若k的值为0,令k=10),加密成26个大字英语字母表该位置对应的字母。
③将26个大写英文字母向左移k(日期的最后1位数字)个位置,并将移出的k个字母依次连接到最后。例如当k=3时,形成如下表所示新的字母排列顺序:
位置
1
2
3
4
……
23
24
25
26
字母
D
E
F
G
……
Z
A
B
C
④日期的第1个数字至第7个数字的加密方法是:计算第i个位置上的数字与第i+1个位置的数字及位置i三者相加的和,在新的字母表中取出该数字和对应的字母,作为第i个位置上数字加密字符。
⑤计算日期的各个位置上数字之和sum,若和sum的值大于26,在新的英文字表中,sum Mod 26对应字母转换成小写字母,作为验证码,否则验证码为新的英文字母表中对应字母。
(1)
根据上述加密算法,若输日期为“20000101”,则生成的注册码为。
(2)
小张根据上述加密算法,设计了一个对应的解密程序,其VB代码如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim i As Integer, j As Integer, s As
String, k As Integer
Dim mw As String, sum As Integer, t As
Integer, t1 As Integer
strl="0123456789"
s=Text1.Text
①
t=k: sum=t
s1=Mid(strl, t+1, 1)
For i=7 To 1 Step-1
t1=Asc(Mid(s, i, 1))-64
j= ②
s1=Mid(strl1, t+1, 1)+s1
sum=sum+t
Next i
mw=jm(k)
If sum>26 Then
sum=sum Mod 26
ch=Chr(Asc(Mid(mw, sun, 1))+32)
Else
ch=Mid(mw, sum, 1)
End If
If ch=Mid(s, 9, 1) Then Text2.Text=s1
Else Text2.Text="该系列号未能通过验证!"
End Sub
Function jm(t As Integer) As String
Dim i As Integer, p As Integer
If t=0 Then t=10
For i=1 To 26
p=(t+i-1) Mod 26
③
Next i
End Function
① ② ③
答案: 【1】DCDEGHIAE
【1】k= Asc(Mid(s, 8, 1))-64或k= Asc(Mid(s, 8, 1))-Asc( "A")+ 1【2】(t1-k+26) Mod 26【3】jm=jm+Chr(65+p)