求:简单的密码加密和取回加密密码代码
谢谢! 问题点数:30、回复次数:14Top
1 楼jxwangzhigang(一棵草)回复于 2002-05-23 11:05:45 得分 5
<%
Function Encrypt(theNumber)
On Error Resume Next
Dim n, szEnc, t, HiN, LoN, i
n = CDbl((theNumber + 1570) ^ 2 - 7 * (theNumber + 1570) - 450)
If n < 0 Then szEnc = "R" Else szEnc = "J"
n = CStr(abs(n))
For i = 1 To Len(n) step 2
t = Mid(n, i, 2)
If Len(t) = 1 Then
szEnc = szEnc & t
Exit For
End If
HiN = (CInt(t) And 240) / 16
LoN = CInt(t) And 15
szEnc = szEnc & Chr(Asc("M") + HiN) & Chr(Asc("C") + LoN)
Next
Encrypt = szEnc
End Function
Function Decrypt(theNumber)
On Error Resume Next
Dim e, n, sign, t, HiN, LoN, NewN, i
e = theNumber
If Left(e, 1) = "R" Then sign = -1 Else sign = 1
e = Mid(e, 2)
NewN = ""
For i = 1 To Len(e) step 2
t = Mid(e, i, 2)
If Asc(t) >= Asc("0") And Asc(t) <= Asc("9") Then
NewN = NewN & t
Exit For
End If
HiN = Mid(t, 1, 1)
LoN = Mid(t, 2, 1)
HiN = (Asc(HiN) - Asc("M")) * 16
LoN = Asc(LoN) - Asc("C")
t = CStr(HiN Or LoN)
If Len(t) = 1 Then t = "0" & t
NewN = NewN & t
Next
e = CDbl(NewN) * sign
Decrypt = CLng((7 + sqr(49 - 4 * (-450 - e))) / 2 - 1570)
End Function
%>
Top
2 楼freezwy(网络自由人)回复于 2002-05-23 11:24:18 得分 0
WWW.ASPSKY.NET下载代码。Top
3 楼jfu(谁动了我的奶酪)回复于 2002-05-23 11:25:51 得分 0
能简单解释一下吗?Top
4 楼jfu(谁动了我的奶酪)回复于 2002-05-23 11:29:40 得分 0
freezwy(网络自由人) ,下载什么?Top
5 楼jfu(谁动了我的奶酪)回复于 2002-05-23 11:56:36 得分 0
freezwy(网络自由人),哪有源代码参考?Top
6 楼julyclyde(Java初学(大学不教只好自己学))回复于 2002-05-23 19:13:30 得分 0
aspsky的不加密的Top
7 楼freezwy(网络自由人)回复于 2002-05-23 19:15:39 得分 20
给你简单代码:
<%
Function Encrypt(theNumber)
On Error Resume Next
Dim n, szEnc, t, HiN, LoN, i
n = CDbl((theNumber + 1570) ^ 2 - 7 * (theNumber + 1570) - 450)
If n < 0 Then szEnc = "R" Else szEnc = "J"
n = CStr(abs(n))
For i = 1 To Len(n) step 2
t = Mid(n, i, 2)
If Len(t) = 1 Then
szEnc = szEnc & t
Exit For
End If
HiN = (CInt(t) And 240) / 16
LoN = CInt(t) And 15
szEnc = szEnc & Chr(Asc("M") + HiN) & Chr(Asc("C") + LoN)
Next
Encrypt = szEnc
End Function
Function Decrypt(theNumber)
On Error Resume Next
Dim e, n, sign, t, HiN, LoN, NewN, i
e = theNumber
If Left(e, 1) = "R" Then sign = -1 Else sign = 1
e = Mid(e, 2)
NewN = ""
For i = 1 To Len(e) step 2
t = Mid(e, i, 2)
If Asc(t) >= Asc("0") And Asc(t) <= Asc("9") Then
NewN = NewN & t
Exit For
End If
HiN = Mid(t, 1, 1)
LoN = Mid(t, 2, 1)
HiN = (Asc(HiN) - Asc("M")) * 16
LoN = Asc(LoN) - Asc("C")
t = CStr(HiN Or LoN)
If Len(t) = 1 Then t = "0" & t
NewN = NewN & t
Next
e = CDbl(NewN) * sign
Decrypt = CLng((7 + sqr(49 - 4 * (-450 - e))) / 2 - 1570)
End Function
%>
<html><body>
Original number: 69 <br>
Encrypt(69) returns: JNMQMOJ8 <br>
Decrypt("JNMQMOJ8") returns: 69
<p>
Another example using variables instead: <br>
Encrypt(Request.Form("ID")) <br>
Encrypt(myVar) <br>
Decrypt(Request.QueryString("id")) <br>
Decrypt("JNMQMOJ8") <br>
Decrypt(myVar)
</body></html>
Top
8 楼freezwy(网络自由人)回复于 2002-05-23 19:17:12 得分 0
虽然ASPSKY的不加密,但是他有一个专题就是讨论这个问题的,路径如下:自己去看看。
http://www.aspsky.net/article/index.asp?classid=2&Nclassid=5
另外“动网论坛”的新版使用了MD5加密密码。Top
9 楼jfu(谁动了我的奶酪)回复于 2002-05-23 19:28:54 得分 0
freezwy(网络自由人) 谢谢你,我如果想改一改,应该怎么改?麻烦你了Top
10 楼julyclyde(Java初学(大学不教只好自己学))回复于 2002-05-23 19:34:05 得分 0
aspsky总是用过时的东西
现在因为MD5的安全问题,都改用SHA-1了,他们才开始用MD5Top
11 楼freezwy(网络自由人)回复于 2002-05-23 19:38:12 得分 0
加密的过程,比如
原来字符串
xx="freezwy"
你如果加密的算法是把ee换成789
那么xx="fr789zwy"
转换的反过程就要把789转换成ee.
当然,这是加密一个例子,同时,加密分好多种类,有些加密是对称的而有些是不对称的,比如RAS算法和MD5算法。
问题的关键是你要找到一个过程,让这些不容易被破解。
如果要修改就很麻烦的了,毕竟要研究精细这个算法的过程。Top
12 楼jfu(谁动了我的奶酪)回复于 2002-05-23 19:46:46 得分 0
freezwy(网络自由人),你说的上面的代码我看不太懂,简单一点的,我想是这样,取得密码每个字母asc代码值,每个代码值进行一个简单的数学运算,得出的数字作为密码存入数据库,能否给个大概程序?比如如何取密码每个字母asc代码值等等,谢谢!Top
13 楼julyclyde(Java初学(大学不教只好自己学))回复于 2002-05-23 19:53:44 得分 0
“如何取密码每个字母asc代码值”都要问?你先学学语言吧
www.microsoft.com/china/scripting/
这里有script文档Top
14 楼superdullwolf(超级大笨狼,每天要自强,MVP)回复于 2002-05-23 19:55:10 得分 5
把你的密码每个字母的asc码值加上2或5任意数字,就可以实现简单加密了,取回时再减去相应数字,关键函数是asc()和 chr(),很简单的,注意写入数据库时“'”符号会出错!避免用就可以了Top
15 楼jfu(谁动了我的奶酪)回复于 2002-05-23 20:03:08 得分 0
谢谢各位,我是比较菜,我正在努力变得不菜,呵呵!Top




