毕业设计(论文)-WEB上用户口令安全传输的研究与实现.doc_第1页
毕业设计(论文)-WEB上用户口令安全传输的研究与实现.doc_第2页
毕业设计(论文)-WEB上用户口令安全传输的研究与实现.doc_第3页
毕业设计(论文)-WEB上用户口令安全传输的研究与实现.doc_第4页
毕业设计(论文)-WEB上用户口令安全传输的研究与实现.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录第一章 引言.1第二章 网络安全.2第三章 加密技术.5第四章 md5工作原理.8第五章 md5算法.10结束语13致谢14参考文献15附录 源代码.16web上用户口令安全传输的研究与实现数学计算机科学学院摘 要:主要阐述利用md5加密算法来保证web上用户口令的安全传输。首先利用md5对用户口令进行一次加密,然后再利用md5对该密文和一个随机数组成的信息进行加密,形成网络上传输的用户口令,避免用户口令以明文的形式在web上进行传输,从而有效地提高认证系统中口令传输的安全性。关键词:口令;md5算法;网络安全the study and implementation of the secure transfer of users password on webschool of mathematics and computer scienceabstract: in this paper,we mainly expound how to transfer our password in security on web by means of md5.firstly,we encrypt the password with md5 and add a random number to the encrypted password to form a new message. then encrypt the message with md5 again to have a new encrypted password that is to be transferred on web. enhances the security of authentication system based on web effectively.key words: password;md5 algorithm ;network security第一章 引言 随着计算机网络的发展,网络安全问题受到越来越大的关注。网络安全一直是internet的一个薄弱环节,因为当初设计tcp/ip时并没有考虑网络的安全机制。如telnet、ftp、email和基于web的应用系统等都是明文方式传输数据包,其中就有用户的帐号和口令等非常重要的数据。而这些数据包很容易被人通过特定的软件或硬件工具截取,通过分析数据包的内容,从而可以获得用户的帐号和口令,然后进行一些非法的活动。因此,用户id和口令的安全传输的问题越来越受到人们的关注。 web程序使用一种称为会话状态管理(session state management)的技术来跟踪浏览器与服务器之间的交互,正如超文本传输协议所规定的那样,每个浏览器的请求都独立于其他浏览器,一个web程序必须使用一些技巧,如cookie,隐藏的表格字段,或url重写,来识别其与特定的浏览器的特定的会话。大多数服务器端开发环境如asp,php,coldfusion等使用cookie。使用会话状态管理的问题是从根本上说它是不安全的,一个黑客可以在服务器和用户浏览器之间截取用来管理会话状态的cookie,表格字段值,或是url,一旦得手,他就可以利用这些信息来接管用户的会话。大多数服务器端的脚本开发环境允许你减少这种危险,例如你可以指定cookie的极短失效时间,使用难预测的会话状态信息。然而最安全的还是使用安全套接层(ssl),购买它后,你就可以不仅保护用户口令,还可以保护会话状态管理信息。如果你不使用ssl,让用户在你的程序中的安全敏感页面中每次都重新认证是个好主意,但是从用户角度出发,这实在是太麻烦了。最后,你必须考虑你和你的用户究竟愿意承担多大的风险。如果密码口令被曝光的危险很高,还是用ssl来构建你的程序吧,如果你不能使用ssl,那么就使用基于md5的登陆过程。这至少能保护你的用户的口令。此外,选择一种允许保护会话状态信息的服务器端脚本技术。通常,当用户不使用ssl(即普通http)登陆时,他(她)的口令从离开浏览器起至到达服务器为止始终是以明文状态暴露的。然而,利用一种称为单向函数的数学函数的帮助,我们可以设计一种并不暴露用户口令的登陆计划。一个函数是一种将集合a的元素映射到集合b的方法,每个集合a中的元素都对应于集合b中的一个确定元素。而一个单向函数的作用就是使逆向的推算非常困难,即,给定集合b的一个元素,很难从集合a中决定哪个元素(如果存在的话)是映射到b集合中的这个元素的。用户试图登陆到一个web应用程序时,服务器端脚本提供用户一个包含有从数十亿可能值中产生的随机数的表格,当用户在此登陆表格中输入她们的id和口令,客户端的脚本将这个随机数值添加到口令后并加以md5单向运算。通过md5算法对用户口令进行加密,可以有效提高用户口令在web上传输的安全性。第二章 网络安全2.1网络安全原则最初的计算机应用程序通常没有或很少安全性,这种情况一直持续了多年,知道人们真正认识到数据的重要性之前,人们虽然知道计算机数据有用,却没有加以保护。开发处理财务和个人数据的计算机应用程序时,对安全性产生了前所未有的需求。人们认识到,计算机数据是现代生活的重要方面。因此,安全的不同领域开始受到重视。网络安全原则包括保密性、完整性、鉴别、不可抵赖、访问控制和可用性等原则。保密性原则要求做到只有发送人和所有的接收人才能访问消息内容。如果非法人员能够访问消息内容,则破坏了保密性原则。鉴别机制可以建立身份证明,鉴别过程保证正确标识电子消息或文档来源。消息内容在发送方发出后和到达所有接受方之前发生改变时,就会失去消息的完整性。不可抵赖性是不允许发送消息者拒绝承认发送消息。访问控制原则确定谁能访问什么。可行性原则指定要随时向授权方提供资源。2.2 网络面临的安全威胁计算机网络上的通信面临以下的4种威胁:(1) 截获:攻击者从网络上窃听听人的通信内容。(2) 中断:攻击者有意中断他人在网络上的通信。(3) 篡改:攻击者故意篡改网络上传送的报文。(4) 伪造:攻击者伪造信息在网络上传送。 这些攻击又分为主动攻击和被动攻击。1. 被动攻击 被动攻击的攻击者只是窃听或监视数据传输,即取得中途的信息。这里的被动攻击者不对数据进行任何修改。事实上,这也使被动攻击很难被发现。因此,处理被动攻击的一般方法是防止而不是探测与纠正。 图2.1又把被动攻击分成两类,分别是消息内容泄露和通信量分析。 被动攻击(截获) 通信量分析 消息内容泄露图2.1 被动攻击消息内容泄露很容易理解。当发送保密电子邮件消息时,我们只希望对方才能访问,否则消息内容会被别人看到。利用某种安全机制,可以防止消息内容泄露。但是,如果传递许多这类消息,则攻击者可以猜出某种模式的相似性,从而猜出消息内容。2. 主动攻击与被动攻击不同的是,主动攻击以某种方式修改消息内容或生成假消息。这些攻击很难防止。但是,这时可以发现和恢复的。这些攻击包括中断、修改和伪造。在主动攻击中,会以某种方式修改消息内容。 中断攻击又称为伪装攻击。 修改攻击又可以分为重放攻击和改变消息。 伪造会产生拒绝服务。图2.2显示了这个分类。 主动攻击 伪造(拒绝服务) 修改 中断(伪装) 重放攻击 改变消息攻击图2.2 主动攻击2.3 口令安全性分析口令攻击是一个一般性的术语,它描述各种行为,包括任何解密、破译以及删除口令的行为,或者任何绕道口令安全机制的其他方法。在计算机的安全行方面,口令攻击时比较原始的。事实上,口令解密是任何电脑网络攻击者新手和解密者首先要学习的内容,这主要是因为口令解密只需要很少的技术和经验。在大多数情况下,一个脆弱的口令安全机制会危及整个系统的安全。攻击在开始时只获得有限次的访问权,通过攻击不弱的口令安全机制,所获得的访问权迅速扩大。通常情况下,仅仅通过口令的攻击,攻击者就可以获得登录的访问权,并且夺得对多个主机的控制权。网络攻击者为了获得目标系统的口令文件,试图以离线的方式破解口令。他们首先猜一个口令,然后,用于源文件系统中一样的加密算法来加密此口令,将加密的结果与文件中的加密口令比较,若相同则猜对了。因为很少有用户使用随即组合的数字和字母来做口令,许多用户使用的口令都可在 一个特殊的黑字典中找到。在这种口令攻击中,入侵者并不穷举所有的字母数字的排列组合来猜测口令,而仅仅用网络攻击者字典中的单词来尝试。网络攻击者们已经构造了这样的字典,不仅包括了英语或其他语言中的常见单词,还包括了网络攻击者词语、拼写有误的单词和一些人名。已有的网络攻击字典包括了大约200000多个单词,用来猜测口令非常成功,而对现代的计算机来说,尝试所有200000多个单词是很轻松的事。网络攻击者只要获得一个用户的口令,尤其是特权用户的口令,就可以为所欲为了。防范的方法很简单,只要是自己的口令不在英语字典中,且不可能被别人猜测出就可以了。2.4 口令攻击手段口令安全是保卫自己系统安全的第一道防线。人们总是试图通过猜测合法用户的口令来获得没有授权的访问。两个通行的做法,一是从存放了许多常用口令的数据库中选取一些“口令”来尝试,另一个做法是设法偷走口令文件,然后通过口令翻译工具来破译这些加密的口令。通常情况下,网络攻击者都喜欢等到一个系统的口令文件。在许多unix系统中,要得到口令文件并不是那么容易,因为口令文件只有超级用户可以读写。因此,口令文件如果能够被盗走,在绝大多数情况下,说明系统的超级用户的权限,在某种特定情况下,可以被攻击者直接或者地行使。攻击者之所以想到的系统存放口令的文件,是因为他们可以从口令文件中,破译出一些口令来,以便以后能够以合法的用户访问这台机器。因此,当超级用户发现系统中的口令文件被非法访问过时,一定要更换所有的用户的口令。当一个攻击者得到了初始的访问权时,就会到处查看,寻找系统中的其他安全漏洞,希望得到进一步的特权。因此,使系统安全的第一步便是是那些未被授权的用户不能进入系统。这就要教育用户懂得什么事口令安全并遵守安全规定。防止入侵者读取口令文件,可以减少他们登录进入系统的可能性。这需要人们知道的是,取得口令文件并不一定要登录进系统,而没有登录进系统照样可以进行许多攻击活动。口令攻击的主要有以下几种手段。1、社会工程学(social engineering),通过人际交往这一非技术手段以欺骗、套取的方式来获得口令。避免此类攻击的对策是加强用户意识。2、猜测攻击。首先使用口令猜测程序进行攻击。口令猜测程序往往根据用户定义口令的习惯猜测用户口令,像名字缩写、生日、宠物名、部门名等。在详细了解用户的社会背景之后,黑客可以列举出几百种可能的口令,并在很短的时间内就可以完成猜测攻击。3、字典攻击。如果猜测攻击不成功,入侵者会继续扩大攻击范围,对所有英文单词进行尝试,程序将按序取出一个又一个的单词,进行一次又一次尝试,直到成功。据有的传媒报导,对于一个有8万个英文单词的集合来说,入侵者不到一分半钟就可试完。所以,如果用户的口令不太长或是单词、短语,那么很快就会被破译出来。4、穷举攻击。如果字典攻击仍然不能够成功,入侵者会采取穷举攻击。一般从长度为1的口令开始,按长度递增进行尝试攻击。由于人们往往偏爱简单易记的口令,穷举攻击的成功率很高。如果每千分之一秒检查一个口令,那么86%的口令可以在一周内破译出来。5、混合攻击,结合了字典攻击和穷举攻击,先字典攻击,再暴力攻击。第三章 加密技术3.1几种常见的加密技术加密技术包括两个元素:算法和密钥。算法是将普通的文本(或者可以理解的信息)与一串数字(密钥)的结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解码的一种算法。在安全保密中,可通过适当的密钥加密技术和管理机制来保证网络的信息通讯安全。密钥加密技术的密码体制分为对称密钥体制和非对称密钥体制两种。相应地,对数据加密的技术分为两类,即对称加密(私人密钥加密)和非对称加密(公开密钥加密)。对称加密以数据加密标准算法为典型代表,非对称加密通常以rsa(rivest shamir ad1eman)算法为代表。对称加密的加密密钥和解密密钥相同,而非对称加密的加密密钥和解密密钥不同,加密密钥可以公开而解密密钥需要保密。1.计算机对称密钥加密算法对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又称为传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至关重要。几种常见的对称密钥加密算法:des、idea、rc5、blowfish等。以上几种算法的具体工作原理本文就不作详细解析了。2.计算机非对称密钥加密算法与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。非对称密钥加密的工作原理如下:(1) a将这a要给b发消息时,a用b的公钥加密信息,因为a知道b的公钥。(2) a将这个信息发给b(已经用b的公钥加密信息)(3) 用自己的私钥解密的信息。注意,只有知道自己的私钥。另外,这个消息只能用的私钥解密,而不能用别的密钥解密。因此,别人都无法看懂这个信息,即使他能够截获这个信息。这是因为入侵者不知道的私钥,而这个信息只能用的私钥解密。几种常见的非对称密钥加密算法:rsa、elgamal、背包算法、rabin、d-h、ecc。下面来具体介绍rsa算法。rsa算法基于这样的数学事实:两个大素数很容易相乘,而得到的积因子则很难。rsa中的私钥和公钥基于大素数(100位以上),算法本身很简单,但实际难度在于rsa选择和生成私钥和公钥。下面看看如何生成私钥和公钥,如何用其进行加密和解密。整个过程如图3.1所示。(1) 选择两个大素数p、q(2) 计算npq(3) 选择一个公钥(即加密密钥)e,使其不是(p-1)与(q-1)的因子(4) 选择私钥(即解密密钥)d,满足下列条件:(de)mod(p-1)(q-1)1(5) 加密时,从明文pt计算密文ct如下:ctpte mod n(6) 将密文ct发送给接收方。(7) 解密时,从密文ct计算明文pt如下ptctd mod n图3.1 rsa算法3.2 消息摘要消息摘要也成为散列,是指消息的指印或汇总,类似于纵向冗余校验和循环冗余校验。用于验证数据完整性(即保证信息在发送之后和接受之前没有被篡改)。下面举一个lrc示例。图3.2显示了发送方的lrc计算,纵向冗余校验将位块组成列表(行)。例如,如果要发送32位,则把其排成四行,然后计算每个列(共8列)有多少个1位(如果1位为奇数,则显示奇性,在阴影lrc行中用一个1位表示;相反,如果1位为偶数,则成为偶性,在阴影lrc行中用一个0位表示)。例如,第一列有两个1,表示偶性,因此第一列的阴影中lrc行为0;同样,最后一列有三个1,表示奇性,因此阴影lrc行为1.这样每列计算奇偶位,生成一个新行,共八个奇偶行,成为整个块的奇偶位。这样,lrc实际上市原消息的指印。 原始数据 原始数据排列成行 lrc 原始数据和lrc 11100100 11011101 00111001 00101001111001001101110100111000100101001 00101001 11100100 11011101 00111001 00101001 00101001图3.2 纵向冗余校验3.3 md5简介md5消息摘要算法是ron rivest开发的。md5实际上根源于一系列消息摘要算法,都是由ron rivest开发的。原先的消息摘要算法成为md,很快进入下一版md2,是ron rivest的,但很脆弱。因此,ron rivest开始开发md3,结果失败了。后来,ron rivest开发了md4,但很快发现其还是不理想,因此最终推出了md5.md5速度很快,产生128位消息摘要。多年来,研究人员发现了md5的弱点,但是md5成功克服了冲突,不过今后情况还很难说。经过初试处理后,输入文本变成512位块(进一步分为16个32位块)。这个算法的输入是四个32位块构成的集合,形成128位消息摘要。由于md5算法的可靠性,被广泛用于杂凑资料正确性验证。经过许多程序员的努力,md5算法已经被各种语言实现,.asp,.php,.java ,c,c#,vb,vc+,delphi等语言。md5算法以16个32位子分组即512位分组来提供数据杂凑,经过程序流程,生成四个32位数据,最后联合起来成为一个128位散列。基本方式为,求余、取余、调整长度、与链接变量进行循环运算。得出结果。 md5由md4、md3、md2改进而来,主要是增加了算法难度和不可逆性。 用户的口令在在进行传输的时候,可以利用md5算法对口令进行加密,这样就可以避免了口令明文在传输,从而保证用户口令的安全性。下面来介绍md5算法及其工作原理。第四章 md5工作原理第一步:填充md5的第一步是在原消息中增加填充位,目的是使原消息长度等于一个值,即比512的倍数少64位。例如,如果原消息长度为1000位,则要填充472位,使消息长度为1472位,因为64+1427=1536,是512的倍数。第二步:添加长度增加填充为位后,下一步要计算消息原长,将其加进填充后的消息末尾。第三步:将输入分成512位的块计算原始消息的长度(除去填充部分),并附加到消息与填充位的后面。该长度用64位表示。如果该消息的长度超过64位,那么就只使用后64位。添加完成后,它就是最终的消息了。第四步:初始化链接变量第四步要初始化四个链接变量,分别称为a,b,c,d,都是32位的数字。这些链接变量的初始十六进制值如下表4-1所示。表4-1 链接变量a十六进制01234567b十六进制89abcdefc十六进制fedcba98d十六进制76543210第五步:处理块初始化之后,就要开始实际算法了。5.1步:将四个链接变量复制到四个变量a,b,c,d中,使a=a,b=b,c=c,d=d,如图4.2所示。 a b c d a b c d图4.2 将四个链接变量复制到四个变量中去5.2步:将当前512位块分解成16个子块,每个子块32位,如图4.3所示。 。 32位 32位 。 32位 块1(512位) 子块1 子块2 子块16图4.3 将当前512位分解为16个子块5.3步:这时有四轮,每一轮处理一个块中的16个子块。每一轮的键入如下:(a)16个子块;(b)变量a、b、c、d;(c)常量t,如图4.4所示。 16个子块 16个子块 一轮 a b cd图4.4 每一轮处理 每一轮有16个输入子块m0,m1,.,m15,或表示位mi,其中i为125。我们知道,每个子块位32位 t是一个常量数组,包含64个元素,每个元素为32位。我们把数组t的元素表示为t1,t2,t64,或tk,其中k为164。由于有四轮,因此每一轮用64位个t只中的16个。第五章 md5算法对md5算法简要的叙述可以为:md5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。在md5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度(bits length)将被扩展至n*512+448,即n*64+56个字节(bytes),n为一个正整数。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后,在在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息字节长度=n*512+448+64=(n+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。md5中有四个32位被称作链接变量(chaining variable)的整数参数,他们分别为: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) =xyzi(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)第二轮gg(a,b,c,d,m1,5,0xf61e2562)gg(d,a,b,c,m6,9,0xc040b340)gg(c,d,a,b,m11,14,0x265e5a51)gg(b,c,d,a,m0,20,0xe9b6c7aa)gg(a,b,c,d,m5,5,0xd62f105d)gg(d,a,b,c,m10,9,0x02441453)gg(c,d,a,b,m15,14,0xd8a1e681)gg(b,c,d,a,m4,20,0xe7d3fbc8)gg(a,b,c,d,m9,5,0x21e1cde6)gg(d,a,b,c,m14,9,0xc33707d6)gg(c,d,a,b,m3,14,0xf4d50d87)gg(b,c,d,a,m8,20,0x455a14ed)gg(a,b,c,d,m13,5,0xa9e3e905)gg(d,a,b,c,m2,9,0xfcefa3f8)gg(c,d,a,b,m7,14,0x676f02d9)gg(b,c,d,a,m12,20,0x8d2a4c8a)第三轮hh(a,b,c,d,m5,4,0xfffa3942)hh(d,a,b,c,m8,11,0x8771f681)hh(c,d,a,b,m11,16,0x6d9d6122)hh(b,c,d,a,m14,23,0xfde5380c)hh(a,b,c,d,m1,4,0xa4beea44)hh(d,a,b,c,m4,11,0x4bdecfa9)hh(c,d,a,b,m7,16,0xf6bb4b60)hh(b,c,d,a,m10,23,0xbebfbc70)hh(a,b,c,d,m13,4,0x289b7ec6)hh(d,a,b,c,m0,11,0xeaa127fa)hh(c,d,a,b,m3,16,0xd4ef3085)hh(b,c,d,a,m6,23,0x04881d05)hh(a,b,c,d,m9,4,0xd9d4d039)hh(d,a,b,c,m12,11,0xe6db99e5)hh(c,d,a,b,m15,16,0x1fa27cf8)hh(b,c,d,a,m2,23,0xc4ac5665)第四轮ii(a,b,c,d,m0,6,0xf4292244)ii(d,a,b,c,m7,10,0x432aff97)ii(c,d,a,b,m14,15,0xab9423a7)ii(b,c,d,a,m5,21,0xfc93a039)ii(a,b,c,d,m12,6,0x655b59c3)ii(d,a,b,c,m3,10,0x8f0ccc92)ii(c,d,a,b,m10,15,0xffeff47d)ii(b,c,d,a,m1,21,0x85845dd1)ii(a,b,c,d,m8,6,0x6fa87e4f)ii(d,a,b,c,m15,10,0xfe2ce6e0)ii(c,d,a,b,m6,15,0xa3014314)ii(b,c,d,a,m13,21,0x4e0811a1)ii(a,b,c,d,m4,6,0xf7537e82)ii(d,a,b,c,m11,10,0xbd3af235)ii(c,d,a,b,m2,15,0x2ad7d2bb)ii(b,c,d,a,m9,21,0xeb86d391)常数ti可以如下选择:在第i步中,ti是4294967296*abs(sin(i)的整数部分,i的单位是弧度。(4294967296等于2的32次方)所有这些完成之后,将a、b、c、d分别加上a、b、c、d。然后用下一分组数据继续运行算法,最后的输出是a、b、c和d的级联。结束语 internet的迅速增长带来了无穷的计算机会,但是同时也带来了全新的问题和担心,特别是信息交换的安全性。利用web密码安全传输只是网络安全的措施之一。如今,新的信息威胁与攻击不断出现。在技术人员找到针对这些攻击的保护方法的同时,而攻击者则在不断寻找新的攻击办法。这种情况必将继续下去。因此,网络安全的道路任重而道远。致谢本文是在董尼老师的悉心指导下完成的。从毕业设计题目的选择、到选到课题的研究和论证,再到本毕业设计的编写、修改,每一步都有董尼老师的细心指导和认真的解析。在董老师的指导下,我在各方面都有所提高,老师以严谨求实,一丝不苟的治学态度和勤勉的工作态度深深感染了我,给我巨大的启迪,鼓舞和鞭策,并成为我人生路上值得学习的榜样。使我的知识层次又有所提高。同时感谢所有教育过我的专业老师,你们传授的专业知识是我不断成长的源泉也是完成本论文的基础。也感谢我同一组的组员和班里的同学是你们在我遇到难题是帮我找到大量资料,解决难题。再次真诚感谢所有帮助过我的老师同学。通过这次毕业设计不仅提高了我独立思考问题解决问题的能力而且培养了认真严谨,一丝不苟的学习态度。由于经验匮乏,能力有限,设计中难免有许多考虑不周全的地方,希望各位老师多加指教。 参考文献1邱仲潘等.密码学与网络安全.清华大学出版社2李泽林,苏淑靖.安全技术.国防工业出版社3胡建伟,马建峰.网络安全与保密.西安电子科技大学出版社4谢希仁.计算机网络(第五版).电子工业出版社5许晓东,荆继武,阮耀平.一种混合密码体制的认证协议及分析.计算机工程6冯登国,斐定.密码学引导.北京:科学出版社7刘成勇,刘明刚,王明举.internet防火墙与网络安全.北京:机械工业出版社附录 源代码 利用javascript和asp来实现web上的用户口令的加密传输,首先javascript脚本编写md5函数,实现md5加密算法。在服务器端利用asp的脚本产生一随机数供客户端使用。代码:/* * md5.jvs 1.0b 27/06/96 * * javascript implementation of the rsa data security, inc. md5 * message-digest algorithm. * * copyright (c) 1996 henri torgemane. all rights reserved. * * permission to use, copy, modify, and distribute this software * and its documentation for any purposes and without* fee is hereby granted provided that this copyright notice* appears in all copies. * * of course, this soft is provided as is without express or implied * warranty of any kind. * * $id: md5.js,v 2000/04/17 16:40:07 kk exp $ * */ function array(n) for(i=0;in;i+) this=0; this.length=n; /* some basic logical functions had to be rewritten because of a bug in * javascript. just try to compute 0xffffffff 4 with it. * of course, these functions are slower than the original would be, but * at least, they work! */ function integer(n) return n%(0xffffffff+1); function shr(a,b) a=integer(a); b=integer(b); if (a-0x80000000=0) a=a%0x80000000; a=b; a+=0x40000000(b-1); else a=b; return a; function shl1(a) a=a%0x80000000; if (a&0x40000000=0x40000000) a-=0x40000000; a*=2; a+=0x80000000; else a*=2; return a; function shl(a,b) a=integer(a); b=integer(b); for (var i=0;i=0) if (t2=0) eturn (t1&t2)+0x80000000); else return (t1&b); else if (t2=0) return (a&t2); else return (a&b); function or(a,b) a=integer(a); b=integer(b); var t1=(a-0x80000000); var t2=(b-0x80000000); if (t1=0) if (t2=0) return (t1|t2)+0x80000000); else return (t1|b)+0x80000000); else if (t2=0) return (a|t2)+0x80000000); else return (a|b); function xor(a,b) a=integer(a); b=integer(b); var t1=(a-0x80000000); var t2=(b-0x80000000); if (t1=0)if (t2=0) return (t1t2); else return (t1b)+0x80000000); else if (t2=0) return (at2)+0x80000000); else return (ab); function not(a) a=integer(a); return (0xffffffff-a); /* here begin the real algorithm */ var state = new array(4); var count = new array(2); count0 = 0; count1 = 0; var buffer = new array(64); var transformbuffer = new array(16); var digestbits = new array(16); var s11 = 7; var s12 = 12; var s13 = 17; var s14 = 22; var s21 = 5; var s22 = 9; var s23 = 14; var s24 = 20; var s31 = 4; var s32 = 11; var s33 = 16; var s34 = 23; var s41 = 6; var s42 = 10; var s43 = 15; var s44 = 21; function f(x,y,z) return or(and(x,y),and(not(x),z); function g(x,y,z) return or(and(x,z),and(y,not(z); function h(x,y,z) return xor(xor(x,y),z); function i(x,y,z) return xor(y ,or(x , not(z); function rotateleft(a,n) return or(shl(a, n),(shr(a,(32 - n); function ff(a,b,c,d,x,s,ac) a = a+f(b, c, d) + x + ac; a = rotateleft(a, s); a = a+b; return a; unction gg(a,b,c,d,x,s,ac) a = a+g(b, c, d) +x + ac; a = rotateleft(a, s); a = a+b; return a; function hh(a,b,c,d,x,s,ac) a = a+h(b, c, d) + x + ac; a = rotateleft(a, s); a = a+b; return a; function ii(a,b,c,d,x,s,ac) a = a+i(b, c, d) + x + ac; a = rotateleft(a, s); a = a+b; return a; function transform(buf,offset) var a=0, b=0, c=0, d=0; ar x = transformbuffer; a = state0; b = state1; c = state2; d = state3; for (i = 0; i 16; i+) x = and(bufi*4+offset,0xff); for (j = 1; j 4; j+) x+=shl(and(bufi*4+j+offset ,0xff), j * 8); /* round 1 */ a = ff ( a, b, c, d, x 0, s11, 0xd76aa478); /* 1 */ d = ff ( d, a, b, c, x 1, s12, 0xe8c7b756); /* 2 */ c = ff ( c, d, a, b, x 2, s13, 0x242070db); /* 3 */ b = ff ( b, c, d, a, x 3, s14, 0xc1bdceee); /* 4 */ a = ff ( a, b, c, d, x 4, s11, 0xf57c0faf); /* 5 */ d = ff ( d, a, b, c, x 5, s12, 0x4787c62a); /* 6 */ c = ff ( c, d, a, b, x 6, s13, 0xa8304613); /* 7 */ b = ff ( b, c, d, a, x 7, s14, 0xfd469501); /* 8 */ a = ff ( a, b, c, d, x 8, s11, 0x698098d8); /* 9 */ d = ff ( d, a, b, c, x 9, s12, 0x8b44f7af); /* 10 */ c = ff ( c,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论