Next j
If k <> i Then
t=a(i):a(i)=a(k):a(k)=tk=k+1
LoopEnd If
End Iflast_exchange=tmp_pos
For j=maxn To last_exchange+1 Step-1
If a(j)<a(j-1) ThenNextj
i=tmp_pos
LoopEnd If
i=i+1
Loop | 第一段 | 第二段 | 第三段 | … … | ||||||
字符位置 | 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 |
①
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)Else
h=cEnd If
Text2.Text = Text2.Text +h
③
Next iDim left As Integer,right As Integer'left为起始编号,
right为结束编号Dim s As Integer, c As Integer's为每次查找的区间长度
left=1:right=maxn
c=1:s=right:i=0
List2.AddItem Str(i+1)+"--->"+Str(maxn)
Do While right-left>3
w(1)=0:w(2)=0:k=1Loop
List2. AddItem"经过"+Str(c)+"次后找到"
End Subx(1) | x(2) | x(3) | | y(1) | y(2) | y(3) |
10 | 20 | 30 | | 3 | 1 | 2 |
Const n = 100
Const m = 6
Dim i As Integer, j As Integer
Dim a(1 To n) As Integer, b(1 To n) As Integer
Dim x(1 To n) As Integer, y(1 To n) As Integer
'读取值变换与位置变换密钥数据,分别保存在数组 x 与 y 中,代码略
'读取待解密数据,保存在数组 a 中,代码略
'下面进行位置变换:位置变换后数据保存到数组 b 中
For i = 1 To ①______a(i)= ①
Next iIf.step1 =True Then
If a(i)="0" ThenElseIf step2 =True Then
If a(i)="9" ThenEnd If
Next ilength =length +1
a(length)="1"
End Ifp=p+ Mid(n, i, 1)
Next ii=(1n +1)\2
Do While i > 0
If Mid(st, i, 1)="9" Then ② Else Exit DoLoop
If i <1 Then
p="1"Else
p=Mid(st, 1, i-1)End If
End IfChar2Int = Asc(c)-65
ElseIf c>="a" And c<="2" Then '字母"a"的ASCII码是97Char2Int =Asc(c)-71
ElseIf c>="0" And c<="g" Then '数字"0"的ASCII码是48①
ElseIf c="+"ThenChar2Int = 62
ElseChar2Int = 63
End IfFor j=i To i+ 3
a( ② )=Char2Int(Mid(s, j, 1))Next j
b(0)=a(0)*4+ a(1)\16
③
b(2)=(a(2)Mod 4)*64+a(3)
For j=0 To 2
ss =ss + Chr(b(j))Next j
Next imax =Val(s2)
page =i + j '(2)_____________
Text2. Text. = Str(page)
Text3. Text = Str(max Mod 100)