Option ExplicitPrivate Sub Cmd_Decrypt_Click()
'单击解密按钮
Txt_PText.Text = Encrypt(Txt_CText.Text)
End SubPrivate Sub Cmd_Encrypt_Click()
'单击加密按钮
Txt_CText.Text = Encrypt(Txt_PText.Text)
End SubPrivate Function Encrypt(ByVal Text As String) As String
'加密/解密函数
'加密时参数为源字符串,返回值为加密字符串
'解密时参数为加密字符串,返回值为源字符串
Dim i As Integer, t As Integer, n As Integer
Dim Lenth As Integer
'初始化当前位置为第一位
t = 1
'置结果为空
Encrypt = ""
'取得字符串长度
Lenth = Len(Text)
'当长度为奇数时跳出
If Lenth Mod 2 = 1 Then Exit Function
'进行退一进三操作
'每循环一次按顺序取得一个加密字符串中的字符
't为该字符在源字符串中的位置
For i = 1 To Lenth
'n为标志
n = 1 - n
'这一句实际上是"t = t + n * (-1) + (1 - n) * 3"
'即n=0的时候退三,n=1的时候进五
t = t - n * 2 + 5
'以下两句确定循环操作
If t = 0 Then t = Lenth
If t > Lenth Then t = t - Lenth
'加入到结果中
Encrypt = Encrypt & Mid(Text, t, 1)
Next i
End Function说明:这是个退3进5的加密解密程序,哪位哥哥或姐姐帮我看看,给个正确的程序我!谢谢了
'单击解密按钮
Txt_PText.Text = Encrypt(Txt_CText.Text)
End SubPrivate Sub Cmd_Encrypt_Click()
'单击加密按钮
Txt_CText.Text = Encrypt(Txt_PText.Text)
End SubPrivate Function Encrypt(ByVal Text As String) As String
'加密/解密函数
'加密时参数为源字符串,返回值为加密字符串
'解密时参数为加密字符串,返回值为源字符串
Dim i As Integer, t As Integer, n As Integer
Dim Lenth As Integer
'初始化当前位置为第一位
t = 1
'置结果为空
Encrypt = ""
'取得字符串长度
Lenth = Len(Text)
'当长度为奇数时跳出
If Lenth Mod 2 = 1 Then Exit Function
'进行退一进三操作
'每循环一次按顺序取得一个加密字符串中的字符
't为该字符在源字符串中的位置
For i = 1 To Lenth
'n为标志
n = 1 - n
'这一句实际上是"t = t + n * (-1) + (1 - n) * 3"
'即n=0的时候退三,n=1的时候进五
t = t - n * 2 + 5
'以下两句确定循环操作
If t = 0 Then t = Lenth
If t > Lenth Then t = t - Lenth
'加入到结果中
Encrypt = Encrypt & Mid(Text, t, 1)
Next i
End Function说明:这是个退3进5的加密解密程序,哪位哥哥或姐姐帮我看看,给个正确的程序我!谢谢了
'即n=0的时候退三,n=1的时候进五
t = t - n * 2 + 5这里都对不上……退三进五具体算法是什么?
我改了下:t = t + n * (-3) + (1 - n) * 5即:t = t - n * 8 + 5
算法说明:加密:如果原码是:123456,加密后应该是:436521。
解密:如果密码是:436521,解密后应该是:123456。
加密过程:从第一位开始,这里是“1”,退3位就是“4”,再从“4”开始进5位就到“3”……
谢谢上面回复人,我试着送分
'这一句实际上是"t = t + n * (-1) + (1 - n) * 3"
'即n=0的时候退三,n=1的时候进五
t = t - n * 8 + 5
'n为标志
n = 1 - n
'以下两句确定循环操作
If t <= 0 Then t = Lenth + t
加密 123456
得到 632541
再解密可以还原~
1。123456通过退3进5算法的加密应该得到436521,如果得到632541,则算法不成功
2。对算法功能说明:加密的理解过程:把要加密的数据写圆圈形状(为了便于理解循环),顺时钟方向是进,逆时钟方向是退,以加密1234567890为例,从第一位"1"开始,退3位是"8",再从"8"开始,进5位是"3",再从"3"开始退3位是"0",再从"0"开始进五位是"5",如此循环,直到所有的数据都经过到(注:这个算法一定可以经过所有的偶数个数据)最后点击加密得到的密码是:8305274961
解密过程应该是加密的逆过程,即对8305274961解密应该得到1234567890
3。我在最上面的算法得不到正确的结果,所以拜托你们来帮我。谢谢了,在线等
Private Function Encrypt(ByVal Text As String) As String
Dim i As Integer, n As Integer
Dim Lenth As Integer
'置结果为空
Encrypt = ""
'取得字符串长度
Lenth = Len(Text)
If Lenth Mod 2 = 1 Then Exit Function
n = 0 '首先退3
'记录当前的位置
Dim intCurX As Integer
intCurX = 1
For i = 1 To Lenth
If n = 0 Then '退3
intCurX = intCurX - 3
If intCurX < 0 Then intCurX = intCurX + Lenth
Else '进5
intCurX = intCurX + 5
If intCurX > Lenth Then intCurX = intCurX - Lenth
End If
If intCurX = 0 Then intCurX = Lenth
n = 1 - n
Encrypt = Encrypt & Mid(Text, intCurX, 1)
Next
End Function2.解密
Private Function Decrypt(ByVal Text As String) As String
Dim i As Integer, n As Integer
Dim Lenth As Integer
'置结果为空
Decrypt = ""
'取得字符串长度
Lenth = Len(Text)
If Lenth Mod 2 = 1 Then Exit Function
Decrypt = Mid(Text, Lenth, 1)
n = 1 '首先进5
Dim intCurX As Integer
intCurX = Lenth
For i = 1 To Lenth - 1
If n = 0 Then '退3
intCurX = intCurX - 3
If intCurX < 0 Then intCurX = intCurX + Lenth
Else '进5
intCurX = intCurX + 5
If intCurX > Lenth Then intCurX = intCurX - Lenth
End If
If intCurX = 0 Then intCurX = Lenth
n = 1 - n
Decrypt = Decrypt & Mid(Text, intCurX, 1)
Next
End Function