VB加密算法

来源:百度知道 编辑:UC知道 时间:2024/05/15 05:23:14
Option Explicit
Const k1 As String * 27 = "qazwsxedcrfvtgbyhnujm ikolp"
Const k2 As String * 27 = "poi uytrewqasdfghjklmnbvcxz"

Private Sub Command1_Click()
Dim i As Integer, code As String, s As String * 1
Dim n As Integer, decode As String
code = LCase(Text1)
For i = 1 To Len(code)
s = Mid(code, i, 1)
If s <> " " Then
n = Asc(s) - Asc("a") + 1
If i Mod 2 <> 0 Then
decode = decode & Mid(k1, n, 1)
Else
decode = decode & Mid(k2, n, 1)
End If
Else
If i Mod 2 <> 0 Then
decode = decode & Mid(k1, 27, 1)
Else
decode = decode & Mid(k2, 27, 1)
End If
End If
Next i
Text2 = decode
End Sub
我是初学者,谁来给我解释一下这段

首先程序定义两个字符串k1和k2;
这里他给出了一个Text1变量,应该是一个全局变量,在程序之前已经定义了。
首先定义code为一个字符串,将Text1里面的文字用LCase()函数将大写字母转换成小写字母。
加密的过程开始,为那一个循环过程。
在这个循环里 设定i的区间是1到code的长度
每个循环开始时候,将code中每一个字母取出来,赋值到s变量里面。
然后判断如果s不是空字符时候,将n赋值为s中的字母与字母a的一个"距离"(这里说不知道你明白不,你好好理解一下吧)。
假如i,即s里面的那个字母在code中是第几位的位数,不是2的倍数,那么就将在decode里面加入k1字符串中的第n个字母。假如i是2的倍数的话,就在decode加入k2字符串里面的第n个字母。

在刚才判断s是否为空字符时候,假如得到的s是为空字符,即跳入以下过程、。
假如i不是2的倍数,空格那个字母变为k1的第27个字母即p,就加入k2的第27个字母即z。

最后将decode赋值给text2。

其实这个程序很简单,定义两个字符串,分别是27个字母,等于是26个字母加空格,再把顺序掉乱。然后根据需要加密的字符串来分别去每一个字母,根据字母的位置来确定取k1或者k2对应的那个掩码字母。