有谁能帮我编写用VB编写 “恺撒密码”解密算法程序吗

来源:百度知道 编辑:UC知道 时间:2024/06/09 12:47:15
以下是加密程序,有谁能帮我编写一下解密算法程序吗

Private Function f(ByVal a As String, k As Integer, n As Integer) As String
If ((Asc(a) >= 65 And Asc(a) <= 97) Or (Asc(a) >= 97 And Asc(a) <= 122)) And Len(a) = 1 Then '判断是否为一个字母
'利用公式计算
If Asc(a) >= 65 And Asc(a) <= 97 Then f = Chr((Asc(a) - 64 + k) Mod n + 64) '当为大写的时候
If Asc(a) >= 97 And Asc(a) <= 122 Then f = Chr((Asc(a) - 96 + k) Mod n + 96) '当为小写的时候
Else
f = "error" '若不满足要求,则返回错误
End If
End Function

Private Sub Command1_Click()
Dim strold As String
Dim strnew As String
Dim k As Integer
Dim n As Integer
Dim i As Long
Dim q As String
Dim tmp As String
q = Text3
k = q
n = 26
strold = Text1.Text '要加密的字符串

For i = 1 To Len(strold)
tmp = Mid(strold, i, 1)
tmp = f(tmp, k, n)
If tmp <> "error" Then
strnew = strnew + tmp
Else
MsgBox &qu

恕小弟无知,以前没听说过这种算法,但从你的例子来看,这个n如果小于26,其加密结果就会出现重复,也就是说是不可逆加密。
这里只考虑n>=26,简单写一下
加密
f=Chr((Asc(a) - 64 + k) Mod n + 64)
那么解密应该是:
uf=chr(((asc(a)-64+n- ( k mod n)) mod n)+64)
这只是对于小写的,大写你自己看着改吧!
可能不是你这个算法的标准答案,但应该可以实现你要求的功能!