|
阅读:490回复:6
[求助]密码还原不了了~~
做数据库时为了安全起见找了段加密程序加密密码,结果发现原来密码没法还原了,谁能帮我写一个解密程序阿,加密程序如下
function encrypt(preString) Dim texts Dim seed Dim i,length prestring = trim(preString) length = len(preString) seed = length Randomize(length) texts = "" for i = 1 to length seed = int(94*rnd(-asc(mid(preString,i,1))-seed*asc(right(prestring,1)))+32) texts = texts & chr(seed) & chr(int(94*rnd(-seed)+32)) next dim dist dist="" for i = 1 to len(texts) if mid(texts,i,1)<>"'" then dist=dist+mid(texts,i,1) end if next encrypt = dist end function |
|
|
2C#
发布于:2003-08-04 15:26
Re: [求助]密码还原不了了~~
没戏了,已经用上了,换了以前的怎么办? |
|
|
4C#
发布于:2003-08-03 22:34
Re: [求助]密码还原不了了~~
我看了以后也觉得没戏,但是贴出来看看有没有希望,
不知道原来密码的话,如果密码丢了怎么办? |
|
|
5C#
发布于:2003-08-02 16:36
Re: [求助]密码还原不了了~~
大概看了一下,瞎说几句。
首先,我认为这个东动要解密的可能比较小,你应该也没有找到解密的代码吧:supergrin:。 第一:程序中的dist,保存的是加密完的数据,其实前面已经存在texts中了,dist与texts的区别是将“'”去除了,这样的操作导致信息损失,无法还原。还原的时候我怎么知道该在什么地方加几个“'”,或者不加。估计原作者这样设计的目的是为了在web上执行不出错。 第二:程序中的加密算法用A_i = f(A_(i-1))的形式编写的,其中用了rnd函数,此函数生成的随机数和很多东东有关,要解密必须要复现这些随机数,源程序中用了负参数减少了变化,但是要复现这些数必须知道length,因为是randomize的种子数,所以此值需要另外保存,还要注意的是原文是trim的length!!! 第三:int()和rnd()*94这种东东会造成信息丢失,还原的数据是有损的,即使说你加密的密码和还原的密码可能有少许的区别,虽然说是少许,计算机可忍受不了。 以上是本人愚见,如果哪位写(找)出了解密算法,尽管向我仍砖头好了:icon_smile_big: 最后(也是最重要的): 为什么要还原密码,登陆的时候讲用户输入的密码加密以后在比较不就可以了? |
|