lovelovezxcvbnm,./ ’连接lovezxcvbn
’取前10位nbvcxzevol
’次序颠倒n110(ascii)-4(位数) int(1(位置)*1.1)
=107107的ascii码为k,依次类推,最后密文:k`ucy|hzts
我们可以通过密文和加密算法反推出密码。从算法的最后一步开始往上推。最后一步用B替换所有’,有没必要将B替换回’呢,答案是否定的。只要我们能得到最后的密文,密码不一样也是有可能的。如果有10个B,那原密码的个数就2的10次方个,虽然原密码只有一个,但是1024个密码都是正确的。如果要完美破解的朋友,可以自己试着编写全部的组合。 那么这步可以忽略了。 上面的算法很清晰, chr(asc(mid(temppass,j,1))-templen int(j*1.1)) 我们只要简单的将 和-换一下就可以了。 chr(asc(mid(temppass,j,1)) templen-int(j*1.1)) 但是还有一个问题,我们事先不知道密码的长度,没关系,幸好密码在1-10位之间,不太长。 那么我们可以用一个1到10的循环求出所有可能的密码,再将其用StrReverse函数次序颠倒。 那么最后得到的密码我们该怎么确定哪个就是呢。可以根据pass&"zxcvbnm,./",看除密码最后是否有zxvbnm,./的前几位。 那么这就是真正的密码。那么如果密码是10位,将是永远正确的,因为后面不存在连接。所以我们可能得到两个答案。 以下便是我编写的解密函数: function Ccode(code)for templen1=1 to 10mmcode=""for j
=1 to 10mmcode=mmcode chr(asc(mid(code,j,1)) templen1-int(j*1.1))
nextCcode=strReverse(mmcode)response.write
"密码"&templen1&":"&Ccode&""if mid(Ccode,templen1 1,10-templen1)
=left("zxcvbnm,./",10-templen1)
and templen1<>10 thenresult
=left(Ccode,templen1)nextresponse.write "最后密码:"&resultend function 好了,算法可能在这么短的时间内无法完全掌握,这是正常的,那么我将在压缩包中附送说明文档和加解密的asp源代码,大家拿回去好好研究吧。同样,密码10永恒正确的。那么我们将asp里原有的密文拿过来看看,会有什么结果。好,两个密码都可以登陆。为测试我在本地假设了个iis,如果本地无法架设web服务器,可以联系本人,用其他语言编写。