ASP.NET网页设计利用MD5变更算法来避免穷举破译暗码
兄弟们,想来你们都看过了昨天的比赛了。我现在的痛苦状跟当时应该差不多。希望本版.net老师不吝赐教,为小弟这一批迷途的羊羔指一条阳光之道!您也知道:学习技术如果只有一个人摸索,那是一件多么痛苦的事情!还有,如果万辛能得名师或长者指点,那又是多么一件幸福和快乐的事情!换算|算法<Pstyle="TEXT-INDENT:2em">MD5是在Web使用程序中最经常使用的暗码加密算法。因为MD5是不成逆的,因此经由MD5盘算失掉后的密文,不克不及经由过程逆向算法失掉原文。<Pstyle="TEXT-INDENT:2em">回忆在Web使用程序中利用MD5加密文本暗码的初志,就是为了避免数据库中保留的暗码不幸保守后被间接取得。但打击者不仅具有数据量伟大的暗码字典,并且创建了良多MD5原文/密文对比数据库,能疾速地找到经常使用暗码的MD5密文,是破译MD5密文的高效路子。但是,MD5密文数据库所利用的是最惯例的MD5加密算法:原文-->MD5-->密文。因而,我们可使用变更的MD5算法,使现成的MD5密文数据库无所事事。<Pstyle="TEXT-INDENT:2em">上面演示一些变更算法的例子,固然,在别的的Web开辟言语中,也迥然不同,完整能失掉不异的了局。<Pstyle="TEXT-INDENT:2em">变更一:轮回MD5<Pstyle="TEXT-INDENT:2em">最简单了解的变更就是对一个暗码举行屡次的MD5运算。自界说一个函数,它承受$data和$times两个形参,第一个是要加密的暗码,第二个是反复加密的次数。完成这类变更有两种算法:<Pstyle="TEXT-INDENT:2em">//迭代算法functionmd5_1_1($data,$times=32){//轮回利用MD5for($i=0;$i<$times;$i++){$data=md5($data);}return$data;}//递回算法functionmd5_1_2($data,$times=32){if($times>0){$data=md5($data);$times--;returnmd5_1_2($data,$times);//完成递回}else{return$data;}}?><Pstyle="TEXT-INDENT:2em">变更二:密文支解MD5<Pstyle="TEXT-INDENT:2em">只管用户的暗码是不断定的字符串,可是只需经由一次MD5运算后,就会失掉一个由32个字符构成的字符串,这时候能够再针对这个定长字符串变更。有点BT的算法是,把这段密文支解成多少段,对每段都举行一次MD5运算,然后把这堆密文连成一个超长的字符串,最初再举行一次MD5运算,失掉仍旧是长度为32位的密文。<Pstyle="TEXT-INDENT:2em">//把密文支解成两段,每段16个字符functionmd5_2_1($data){//先把暗码加密发展度为32字符的密文$data=md5($data);//把暗码支解成两段$left=substr($data,0,16);$right=substr($data,16,16);//分离加密后再兼并$data=md5($left).md5($right);//最初把长字串再加密一次,成为32字符密文returnmd5($data);}//把密文支解成32段,每段1个字符functionmd5_2_2($data){$data=md5($data);//轮回地截取密文中的每一个字符并举行加密、毗连for($i=0;$i<32;$i++){$data.=md5($data{$i});}//这时候$data长度为1024个字符,再举行一次MD5运算returnmd5($data);}?><Pstyle="TEXT-INDENT:2em">固然,这类密文支解的详细算法是数之不尽的,好比能够把原密文支解成16段每段两字符、8段每段4字符,大概每段的字符数不相称……<Pstyle="TEXT-INDENT:2em">变更三:附加字符串干与<Pstyle="TEXT-INDENT:2em">在加密历程的一个步骤中,附加一个内容断定的字符串(好比说用户名),干与被加密的数据。不成以用随机字串,由于如许会使原算法没法重现。这类算法在某些情形下是很具有上风的,好比说用于大批的用户暗码加密,能够把用户名作为附加干与字串,如许打击者就算晓得你的算法,也很难从他们手中的字典中一会儿天生海量的对比表,然后大批地破译用户暗码,只能有针对性的穷举为数未几的用户。<Pstyle="TEXT-INDENT:2em">//附加字符串在原数据的尾部functionmd5_3_1($data,$append){returnmd5($data.$append);}//附加字符串在原数据的头部functionmd5_3_2($data,$append){returnmd5($append.$data);}//附加字符串在原数据的头尾functionmd5_3_3($data,$append){returnmd5($append.$data.$append);}?><Pstyle="TEXT-INDENT:2em">变更四:巨细写变更干与<Pstyle="TEXT-INDENT:2em">因为PHP所供应的md5()函数前往的密文中的英笔墨母全体都是小写的,因而我们能够把它们全体转为年夜写,然后再举行一次MD5运算。 <Pstyle="TEXT-INDENT:2em">functionmd5_4($data){//先失掉暗码的密文$data=md5($data);//再把密文中的英文母全体转为年夜写$data=strtotime($data);//最初再举行一次MD5运算并前往returnmd5($data);}?><Pstyle="TEXT-INDENT:2em">变更五:字符串序次干与<Pstyle="TEXT-INDENT:2em">把MD5运算后的密笔墨符串的按次调转后,再举行一次MD5运算。 <Pstyle="TEXT-INDENT:2em">functionmd5_5($data){//失掉数据的密文$data=md5($data);//再把密笔墨符串的字符按次调转$data=strrev($data);//最初再举行一次MD5运算并前往returnmd5($data);}?><Pstyle="TEXT-INDENT:2em">变更6、变更7、变更八……<Pstyle="TEXT-INDENT:2em">MD5变更算法是数之不尽的,乃至不必本人再往制造,就用下面的五个相互组合就能够弄出很BT的算法。好比说先轮回加密后再支解,并在每段上附加一个字符串再分离加密,然后变更巨细写并倒置字符串按次后连成一个长字符串再举行MD5运算……假如真的很不幸,因为某些毛病,好比说SQLInjection大概文件体系中的数据库被下载而异致用户暗码数据表露,那末MD5变更算法就可以年夜年夜地增添破译出暗码原文的难度,起首就是使网上良多的MD5原文/密文对比数据库(要晓得,这是破译MD5最高效的办法)没有效了,然后就是使打击者用惯例算法往穷举一串由变更算法失掉的密文而弄得焦头烂额。固然,MD5变更算法出格合适用于非开源的Web程序利用,虽然说用在开源的程序中上风会被减弱(人人都晓得算法),可是也能克制MD5原文/密文对比数据库的感化。要举行这些庞大的变更运算,固然就要消费的更多的体系开支了,但是关于平安性请求很严厉的体系来讲,多支付一些来调换高一点的平安性,是完整值得的。不过你如果学.net的话,你就不要选os了,这课比较底层的。你可以旁听数据库加上软件构件和中间件。(webservices和面向服务的课也应该听一听) 可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。 碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。 Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。 主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。 ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
页:
[1]