修改一个VB移位字符串能加密或解密

来源:百度知道 编辑:UC知道 时间:2024/05/15 17:44:49
以下代码是一个字符串位移加密解密源码
要求修改加密算法,有一个位移数 X1
要求,加密每个字母位移,字母的序号加上位移数
例:明文abcd 密钥为2
密文dfhg

主要是有一个循环的要怎么办26一循环明文一长了就超出26了要做一个循环
原来的源码如下,希望有能力的人事帮改一下,谢谢了
'加密
Private Function EncryptCode(ByVal sSourceCode As String, ByVal iPosition As Integer)
Dim I As Integer
Dim Char As String
Dim sTargetCode As String
For I = 1 To Len(sSourceCode)
Char = Mid(sSourceCode, I, 1)
sTargetCode = sTargetCode & Chr(Asc(Char) + iPosition)
Next I
EncryptCode = sTargetCode
End Function
'解密
Private Function RevertCode(ByVal sTargetCode As String, ByVal iPosition As Integer)
Dim I As Integer
Dim Char As String
Dim sSourceCode As String
For I = 1 To Len(sTargetCode)
Char = Mid(sTargetCode, I, 1)
sSourceCode = sSourceCode & Chr(Asc(Char) - iPosition)
Next I
RevertCode = sSourceCode
End Fun

以下改过的编码及解码在输入时不区分大小写.输出全部为大写.看符合你的要求不:

=========二次修改==================
Private Function EncryptCode(ByVal sSourceCode As String, ByVal iPosition As Integer)
sSourceCode = UCase(sSourceCode)
Dim I As Integer
Dim Char As String
Dim sTargetCode As String
j = 0
For I = 1 To Len(sSourceCode)
Char = Mid(sSourceCode, I, 1)
sTargetCode = sTargetCode & Chr(65 + (Asc(Char) + (iPosition + j) Mod 26 - 65) Mod 26)
j = j + 1
Next I
EncryptCode = sTargetCode
End Function
'解密
Private Function RevertCode(ByVal sTargetCode As String, ByVal iPosition As Integer)
sTargetCode = UCase(sTargetCode)
Dim I As Integer
Dim Char As String
Dim sSourceCode As String
j = 0
For I = 1 To Len(sTargetCode)
Char = Mid(sTargetCode, I, 1)
If (Asc(Char) - (iPosition + j) Mod 26) < 65 Then
sSourceCode = sSourceCode & Chr(65 + (Asc(Char) - (iPosition + j) Mod 26 - 39) Mod 26)
Else