asp加密请教高手!
发布网友
发布时间:2024-02-21 04:51
我来回答
共3个回答
热心网友
时间:2024-10-21 03:20
经试验,发现如果
字符串比较长,其中即使含有英文字母(如大写的A)时,也可以校验成功!
小写则全部不行!
再分析:
你的解密是完全反向逆运算的,逻辑上没有问题,然而
加密方法就不合理!
str1=str1&chr(asc(ch)*2-strlen)
这一行中,如果asc(ch)*2-strlen比128大就不正常了
标准的ASC和CHR运算
不支持扩展ASCII编码,只支持1-127
查查,数字符号、大写字母、小写字母的ASCII是多少,顺序如何?
你会编程的,不用多说了。
再试试?
热心网友
时间:2024-10-21 03:20
if convpwd(deconvpwd(rs1("pswd")))=rs1("pswd") then
这里是不是少了个 "="号?
热心网友
时间:2024-10-21 03:21
楼上的好快,呵呵,已经说出原因来了。
我做了一个测试用的程序,可以给你看一下结果:
这个是测试程序:
'这个是你提供的加密函数
Function convpwd(str)
str1=""
strlen=len(str)
for i=1 to strlen
ch=Mid(str,i,1)
str1=str1&chr(asc(ch)*2-strlen)
next
convpwd=str1
End Function
'showInAsc函数是用来将字符串以ascii格式显示的
Function showInAsc(str)
For i = 1 To Len(str)
showInAsc=showInAsc & "--" & AscW(Mid(str,i,1))
Next
End function
s="123Aabc"
s2=convpwd(s)
response.write showInAsc(s) & "<br>"
response.write showInAsc(s2)
测试结果很明显:
123Aabc 的对应ascii: --49--50--51--65--97--98--99
而将其“加密”后得到:--91--93--95--123--0--0--0
呵呵,这就是错误所在了。因为asc(chr(129))=0 ,呵呵。大于128的返回0
如果有所改进呢,可以使用扩展的asc,chr函数,分别对应ascW,chrW
刚才发现百度知道会自动在分号前面加一个斜线。我修改了后又没有了。。。奇怪'"