- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MD5加密……从中就有很大把握得到对方密码,这个就是个人习惯导致的,关于这个问题将在以后的文章中单独详细说明!
言归正传,或许你会问这些和我们保存明文资料有什么关系?
告诉你,很有关系!因为我们前面说到的资料有一种获取途径就是从目标用户经常上的一些网站上获取来的!
假设:目标用户毕业于某XXX大学,因此他经常上这个大学的校友论坛进行联谊或者其他交流。那么他在这个论坛必定需要注册,论坛注册通常需要填写:
用户名
密码
邮箱
密码保护问题
密码保护答案
有的甚至要求你填写生日资料,当然这个通常是在详细资料里备选的。不过在类似校友论坛这样的地方大家都会很乐意填写真实资料(此外,如果找到目标用户的QQ那么在腾讯的QQ空间上也能轻松的找到你的生日!因为腾讯注册时候是需要填写生日作为密码保护及身份验证的资料,此外每当一个用户生日。所有用户都会收到官方的提示:您的好友XXX生日就要到了,您可以发送祝福……那么我们就顺利得到生日)
前面我们已经说道,得到这些资料就有很大把握能得到密码。所以如果你是一个普通用户,你经常上网,到处注册,那么就要小心保护你的个人隐私了。尽量不要使用相同的密码,更不要使用简单密码!因为很多用户为了图好记忆、或者方便。经常使用一些简单的密码。而且几乎所有地方的密码都是同一个,这个时候如果你所注册的网站存在安全问题,那么你的资料就轻易的被人得到了。
所以接下来要说的是关于程序编写者及网站运营商:
希望你们能在程序编写过程中对用户的资料进行绝对加密,我这里的意思是你们可以写一套独立的加密机制,对用户资料和密码加密,当然如果不是一些大型公司,是没有专业的人员可以写出像——MD5、RSA这样让别人直接无法破解的密码。所以普通用户就听听我下面的建议和构思吧!
对用户的所有资料包括:用户名、密码、生日、密码保护问题及答案等全部进行MD5加密,这样做不但能保护用户的隐私,也能大大提高资料的保护和安全性!
当然,简单的MD5加密是没有办法达到绝对的安全的。因为普通的MD5加密是允许被查询的。就是典型的MD5密码查询网站。这里几乎能查出大部分人密码组合。所以接下来的重点就是如题目所说。对MD5进行改造、增强!
下面是我的思路:
对MD5密码进行截取保存及截取验证
一个简单的例子
A=”123456”
Response.write (md5(A))
得到的结果是:
16位:49ba59abbe56e057
32位:e10adc3949ba59abbe56e057f20f883e
如果直接这样保存进数据库。当网站存在注入。或者其他什么漏洞,导致这段密文被人知道,那么就可以查询或者爆破得到密码。
那么我们要做的是,将密码进行随机截取,比如我截取验证前面14位
Rs(“password”)=left(md5(a),14)
这样就把MD5密码的前14位写进数据库。
然后验证的使用使用
If left(request.form(“a”) ,14)rs(“password”) then
Response.write (“密码错误”)
Else
Response.write (“登陆成功”)
End if
那么得到一个14的MD5你郁闷不郁闷?
想破解?破解去吧!后面差了2位的可能组合有多少,就不用我去算了吧?
或许你会问。这么以来后面也就是只要前面14位一样就可以成功了?那么不是同样加大了密码被暴力破解出来的可能性吗?因为只要满足前14位相同就可以登陆成功啊!
也就是说加入后面2位带来的组合有1000种。那么就是说我只要破解出这1000种组合里的1个就能成功登陆了。
是的!没错,如果只是这样做,虽然是密码复杂性加大,但是也导致密码更容易被破解,那么如何解决这个问题?
我想了很久,终于有了点头绪.那就是——让用户自定义截取的长度,及截取的位置、对加密长度再进行自定义组合。那么在网站没被攻陷之前,你是没有办法的得知密码的解密及截取组合方式的。想要按照上面说的按照列出可能的所有组合然后再进行爆破得到一个就得到权限,就不可能了。因为按照我上面的办法组合出来的密码的可能组合数是不可测的,全部列举出来都够你去自己建立一个的数据库了。所以攻击者只能放弃对md5密码的猜解。那么及时我给你密文。给你后台地址。你也永远进不去。永远得不到权限了。
光说不做没有意义,接下来就讲讲具体的实现办法:下面粗糙的写了几个简单例子,具体应用看各位程序员自己灵活运用思路了
先定义几个变量:
password1(客户端提交的密码)
password2(服务端数据库内的密码)
beginnumber (开始截取的位置)
number (截取位数)
首先是注册页面,用户提交的所有资料都进行md5加密,关键部分例如:密码则使用下面的混淆加密,或者索性全部使用下面的混淆加密方式好了
首先申明:
文档评论(0)