仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 707|回复: 8
打印 上一主题 下一主题

[学习教程] ASP网页设计MD5算法研讨

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:15:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。算法综述

  MD5的全称是Message-DigestAlgorithm5(信息-择要算法),在90年月初由MITLaboratoryforComputerScience和RSADataSecurityInc的RonaldL.Rivest开辟出来,经MD2、MD3和MD4开展而来。它的感化是让年夜容量信息在用数字署名软件签订公家密匙前被"紧缩"成一种保密的格局(就是把一个恣意长度的字节串变更成必定长的年夜整数)。不论是MD2、MD4仍是MD5,它们都必要取得一个随机长度的信息并发生一个128位的信息择要。固然这些算法的布局或多或少有些类似,但MD2的计划与MD4和MD5完整分歧,那是由于MD2是为8位呆板做过计划优化的,而MD4和MD5倒是面向32位的电脑。这三个算法的形貌和C言语源代码在InternetRFCs1321中有具体的形貌(http://www.ietf.org/rfc/rfc1321.txt),这是一份最威望的文档,由RonaldL.Rivest在1992年8月向IEFT提交。

  Rivest在1989年开辟出MD2算法。在这个算法中,起首对信息举行数据补位,使信息的字节长度是16的倍数。然后,以一个16位的查验和追加到信息开端。而且依据这个新发生的信息盘算出散列值。厥后,Rogier和Chauvaud发明假如疏忽了查验和将发生MD2抵触。MD2算法的加密后了局是独一的--既没有反复。

  为了增强算法的平安性,Rivest在1990年又开辟出MD4算法。MD4算法一样必要弥补信息以确保信息的字节长度加上448后能被512整除(信息字节长度mod512=448)。然后,一个以64位二进制暗示的信息的最后长度被增加出去。信息被处置成512位Damg?rd/Merkle迭代布局的区块,并且每一个区块要经由过程三个分歧步骤的处置。DenBoer和Bosselaers和其别人很快的发明了打击MD4版本中第一步和第三步的毛病。Dobbertin向人人演示了怎样使用一部一般的团体电脑在几分钟内找到MD4完全版本中的抵触(这个抵触实践上是一种毛病,它将招致对分歧的内容举行加密却大概失掉不异的加密后了局)。毫无疑问,MD4就此被减少失落了。

  只管MD4算法在平安上有个这么年夜的毛病,但它对在厥后才被开辟出来的好几种信息平安加密算法的呈现却有着不成无视的引诱感化。除MD5之外,个中对照着名的另有SHA-1、RIPE-MD和HAVAL等。

  一年今后,即1991年,Rivest开辟出手艺上更加趋近成熟的MD5算法。它在MD4的基本上增添了"平安-带子"(Safety-Belts)的观点。固然MD5比MD4略微慢一些,但却更加平安。这个算法很分明的由四个和MD4计划有少量分歧的步骤构成。在MD5算法中,信息-择要的巨细和添补的需要前提与MD4完整不异。DenBoer和Bosselaers曾发明MD5算法中的假抵触(Pseudo-Collisions),但除此以外就没有其他被发明的加密后了局了。

  VanOorschot和Wiener已经思索过一个在散列中暴力征采抵触的函数(Brute-ForceHashFunction),并且他们推测一个被计划专门用来搜刮MD5抵触的呆板(这台呆板在1994年的打造本钱约莫是一百万美圆)能够均匀每24天就找到一个抵触。但单从1991年到2001年这10年间,竟没有呈现替换MD5算法的MD6或被叫做其他甚么名字的新算法这一点,我们就能够看出这个瑕疵并没有太多的影响MD5的平安性。下面一切这些都不敷以成为MD5的在实践使用中的成绩。而且,因为MD5算法的利用不必要付出任何版权用度的,以是在一样平常的情形下(非尽密使用范畴。但即使是使用在尽密范畴内,MD5也不掉为一种十分优异的两头手艺),MD5怎样都应当算得上长短常平安的了。

  算法的使用

  MD5的典范使用是对一段信息(Message)发生信息择要(Message-Digest),以避免被改动。好比,在UNIX下有良多软件鄙人载的时分都有一个文件名不异,文件扩大名为.md5的文件,在这个文件中一般只要一行文本,大抵布局如:

   MD5(tanajiya.tar.gz)=0ca175b9c0f726a831d895e269332461

  这就是tanajiya.tar.gz文件的数字署名。MD5将全部文件看成一个年夜文本信息,经由过程其不成逆的字符串变更算法,发生了这个独一的MD5信息择要。假如在今后传布这个文件的过程当中,不管文件的内容产生了任何情势的改动(包含工资修正大概下载过程当中线路不不乱引发的传输毛病等),只需你对这个文件从头盘算MD5时就会发明信息择要不不异,由此能够断定你失掉的只是一个不准确的文件。假如再有一个第三方的认证机构,用MD5还能够避免文件作者的"承认",这就是所谓的数字署名使用。

  MD5还普遍用于加密息争密手艺上。好比在UNIX体系顶用户的暗码就是以MD5(或别的相似的算法)经加密后存储在文件体系中。当用户登录的时分,体系把用户输出的暗码盘算成MD5值,然后再往和保留在文件体系中的MD5值举行对照,进而断定输出的暗码是不是准确。经由过程如许的步骤,体系在其实不晓得用户暗码的密码的情形下就能够断定用户登录体系的正当性。这不仅能够制止用户的暗码被具有体系办理员权限的用户晓得,并且还在必定水平上增添了暗码被破解的难度。

  恰是由于这个缘故原由,如今被黑客利用最多的一种破译暗码的办法就是一种被称为"跑字典"的办法。有两种办法失掉字典,一种是一样平常汇集的用做暗码的字符串表,另外一种是用分列组合办法天生的,先用MD5程序盘算出这些字典项的MD5值,然后再用方针的MD5值在这个字典中检索。我们假定暗码的最年夜长度为8位字节(8Bytes),同时暗码只能是字母和数字,共26+26+10=62个字符,分列组合出的字典的项数则是P(62,1)+P(62,2)….+P(62,8),那也已是一个很地理的数字了,存储这个字典就必要TB级的磁盘阵列,并且这类办法另有一个条件,就是能取得方针账户的暗码MD5值的情形下才能够。这类加密手艺被普遍的使用于UNIX体系中,这也是为何UNIX体系比一样平常操纵体系更加坚实一个主要缘故原由。

  算法形貌

  对MD5算法扼要的叙说能够为:MD5以512位分组来处置输出的信息,且每分组又被分别为16个32位子分组,经由了一系列的处置后,算法的输入由四个32位分组构成,将这四个32位分组级联后将天生一个128位散列值。

  在MD5算法中,起首必要对信息举行添补,使其字节长度对512求余的了局即是448。因而,信息的字节长度(BitsLength)将被扩大至N*512+448,即N*64+56个字节(Bytes),N为一个正整数。添补的办法以下,在信息的前面添补一个1和有数个0,直到满意下面的前提时才中断用0对信息的添补。然后,在在这个了局前面附加一个以64位二进制暗示的添补前信息长度。经由这两步的处置,如今的信息字节长度=N*512+448+64=(N+1)*512,即长度刚好是512的整数倍。如许做的缘故原由是为满意前面处置中对信息长度的请求。

  MD5中有四个32位被称作链接变量(ChainingVariable)的整数参数,他们分离为:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210。

  当设置好这四个链接变量后,就入手下手进进算法的四轮轮回运算。轮回的次数是信息中512位信息分组的数量。

  将下面四个链接变量复制到别的四个变量中:A到a,B到b,C到c,D到d。

  主轮回有四轮(MD4只要三轮),每轮轮回都很类似。第一轮举行16次操纵。每次操纵对a、b、c和d中的个中三个作一次非线性函数运算,然后将所得了局加上第四个变量,文本的一个子分组和一个常数。再将所得了局向右环移一个不定的数,并加上a、b、c或d中之一。最初用该了局代替a、b、c或d中之一。
以一下是每次操纵顶用到的四个非线性函数(每轮一个)。

   F(X,Y,Z)=(X&Y)|((~X)&Z)
   G(X,Y,Z)=(X&Z)|(Y&(~Z))
   H(X,Y,Z)=X^Y^Z
   I(X,Y,Z)=Y^(X|(~Z))
   (&是与,|是或,~长短,^是异或)

  这四个函数的申明:假如X、Y和Z的对应位是自力和匀称的,那末了局的每位也应是自力和匀称的。
F是一个逐位运算的函数。即,假如X,那末Y,不然Z。函数H是逐位奇偶操纵符。

  假定Mj暗示动静的第j个子分组(从0到15),<<
   FF(a,b,c,d,Mj,s,ti)暗示a=b+((a+(F(b,c,d)+Mj+ti)<<   GG(a,b,c,d,Mj,s,ti)暗示a=b+((a+(G(b,c,d)+Mj+ti)<<   HH(a,b,c,d,Mj,s,ti)暗示a=b+((a+(H(b,c,d)+Mj+ti)<<   II(a,b,c,d,Mj,s,ti)暗示a=b+((a+(I(b,c,d)+Mj+ti)<<
  这四轮(64步)是:

  第一轮

   FF(a,b,c,d,M0,7,0xd76aa478)
   FF(d,a,b,c,M1,12,0xe8c7b756)
   FF(c,d,a,b,M2,17,0x242070db)
FF(b,c,d,a,M3,22,0xc1bdceee)
   FF(a,b,c,d,M4,7,0xf57c0faf)
   FF(d,a,b,c,M5,12,0x4787c62a)
   FF(c,d,a,b,M6,17,0xa8304613)
   FF(b,c,d,a,M7,22,0xfd469501)
   FF(a,b,c,d,M8,7,0x698098d8)
   FF(d,a,b,c,M9,12,0x8b44f7af)
   FF(c,d,a,b,M10,17,0xffff5bb1)
   FF(b,c,d,a,M11,22,0x895cd7be)
   FF(a,b,c,d,M12,7,0x6b901122)
   FF(d,a,b,c,M13,12,0xfd987193)
   FF(c,d,a,b,M14,17,0xa679438e)
   FF(b,c,d,a,M15,22,0x49b40821)

  第二轮
</p>ActiveServerPage技术为应用开发商提供了基于脚本的直观、快速、高效的应用开发手段,极大地提高了开发的效果。在讨论ASP的安全性问题之前,让我们来看看ASP是怎么工作的。
第二个灵魂 该用户已被删除
沙发
发表于 2015-1-24 13:48:17 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
谁可相欹 该用户已被删除
板凳
发表于 2015-2-1 16:16:30 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
透明 该用户已被删除
地板
发表于 2015-2-7 08:10:17 | 只看该作者
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
若天明 该用户已被删除
5#
发表于 2015-2-21 04:55:05 | 只看该作者
ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。
山那边是海 该用户已被删除
6#
发表于 2015-3-6 19:37:46 | 只看该作者
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
爱飞 该用户已被删除
7#
发表于 2015-3-13 07:07:16 | 只看该作者
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
老尸 该用户已被删除
8#
发表于 2015-3-13 07:07:18 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
9#
发表于 2015-3-13 07:07:18 | 只看该作者
不能只是将它停留在纸上谈兵的程度上。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-6 17:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表