




免费预览已结束,剩余19页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录1、引言21.1 加密的由来21.2 加密的概念31.3加密的理由32、加密技术分析42.1对称式加密技术42.1.1 描述42.1.2对称加密算法分析42.2 非对称加密技术62.2.1 描述62.2.2目的和意义72.2.3 rsa公钥加密技术73、具体设计103.1设计介绍103.2设计的代码144、des算法深入研究154.1具体分析154.1.1 des 的工作方式154.1.2 des 算法使用步骤154.1.3 算法的安全性分析174.1.4 本设计的变体175、结束语22致 谢24参考文献25- 24 -1、引言信息是一种资源,也是一种财富。在现代社会中,信息处理和通信技术日益发展,保护信息的安全,特别是保护重要信息的安全,已成为国际社会普遍关注的重大问题。现在越来越多的软式是收费软件,比如瑞星,卡巴斯基等等。这就需要用到序列号了。但是现在越来越多的软件被破解,严重影响了其开发公司的经济利益,于是就需要给这个序列号加密才行。保护知识产权,抵制盗版软件,是目前中国软件业所面临的迫切问题。可是,尽管国家一再加大力度,打击非法软件出版物,扶持正版软件,但实际效果并不理想。眼见着无孔不入的盗版软件对软件市场的侵害,更多的软件商选择了购买加密产品或者加密技术来保护自己的软件。 本课题的实现,可以使所使用的软件更加安全,有效的维护软件开发公司的利益,以及抑制软件的破解,打击盗版,支持正版。验证一个软件只能允许在一台机器上面使用,如果到另外一台机器必须获取另外的新的机器激活码。可以有效的保护软件公司的软性资产,让软性资产在用户使用的时候变成有形资产。1.1 加密的由来加密作为保障数据安全的一种方式,它不是现在才有的,它产生的历史相当久远,它是起源于要追溯于公元前2000年(几个世纪了),虽然它不是现在我们所讲的加密技术(甚至不叫加密),但作为一种加密的概念,确实早在几个世纪前就诞生了。当时埃及人是最先使用特别的象形文字作为信息编码的,随着时间推移,巴比伦、美索不达米亚和希腊文明都开始使用一些方法来保护他们的书面信息。近期加密技术主要应用于军事领域,如美国独立战争、美国内战和两次世界大战。最广为人知的编码机器是german enigma机,在第二次世界大战中德国人利用它创建了加密信息。此后,由于alan turing和ultra计划以及其他人的努力,终于对德国人的密码进行了破解。当初,计算机的研究就是为了破解德国人的密码,人们并没有想到计算机给今天带来的信息革命。随着计算机的发展,运算能力的增强,过去的密码都变得十分简单了,于是人们又不断地研究出了新的数据加密方式,如利用rosa算法产生的私钥和公钥就是在这个基础上产生的。1.2 加密的概念数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。1.3加密的理由当今网络社会选择加密已是我们别无选择,其一是我们知道在互联网上进行文件传输、电子邮件商务往来存在许多不安全因素,特别是对于一些大公司和一些机密文件在网络上传输。而且这种不安全性是互联网存在基础tcp/ip协议所固有的,包括一些基于tcp/ip的服务;另一方面,互联网给众多的商家带来了无限的商机,互联网把全世界连在了一起,走向互联网就意味着走向了世界,这对于无数商家无疑是梦寐以求的好事,特别是对于中小企业。为了解决这一对矛盾、为了能在安全的基础上大开这通向世界之门,我们只好选择了数据加密和基于加密技术的数字签名。 加密在网络上的作用就是防止有用或私有化信息在网络上被拦截和窃取。一个简单的例子就是密码的传输,计算机密码极为重要,许多安全防护体系是基于密码的,密码的泄露在某种意义上来讲意味着其安全体系的全面崩溃。通过网络进行登录时,所键入的密码以明文的形式被传输到服务器,而网络上的窃听是一件极为容易的事情,所以很有可能黑客会窃取得用户的密码,如果用户是root用户或administrator用户,那后果将是极为严重的。2、加密技术分析下面介绍两种加密方法:对称式加密技术和非对称式加密技术。2.1对称式加密技术2.1.1 描述对称算法(symmetric algorithm),有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的。所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至关重要。特点分析 :对称加密的优点在于算法实现后的效率高、速度快。 对称加密的缺点在于密钥的管理过于复杂。如果任何一对发送方和接收方都有他们各自商议的密钥的话,那么很明显,假设有n个用户进行对称加密通信,如果按照上述方法,则他们要产生n(n-1)把密钥,每一个用户要记住或保留n-1把密钥,当n很大时,记住是不可能的,而保留起来又会引起密钥泄漏可能性的增加。常用的对称加密算法有des,dea等。2.1.2对称加密算法分析对称加密算法的分类:对称加密算法可以分成两类:一类为序列算法(stream algorithm):一次只对明文中单个位(有时为字节)加密或解密运算。另一类为分组算法(block algorithm):一次明文的一组固定长度的字节加密或解密运算。 现代计算机密码算法一般采用的都是分组算法,而且一般分组的长度为64位,之所以如此是由于这个长度大到足以防止分析破译,但又小到足以方便使用。一、des加密算法简介(data encryption standard )1973 年 5 月 15 日,美国国家标准局 (nbs) 在“联邦注册”上发布了一条通知,征求密码算法,用于在传输和存储期间保护数据。ibm 提交了一个候选算法,它是 ibm 内部开发的,名为 lucifer。在美国国家安全局 (nsa) 的“指导”下完成了算法评估之后,在 1977 年 7 月 15 日,nbs 采纳了 lucifer 算法的修正版作为新的数据加密标准。原先规定使用10年,但由于新的加密标准还没有完成,所以des算法及其的变形算法一直广泛的应用于信息加密方面。(本文将在第四部分具体介绍des算法及应用,并编写相应加密代码。)二、aes算法des 算法是全世界最广泛使用的加密算法。最近,就在 2000 年 10 月,它在其初期就取得的硬件方面的优势已经阻碍了其发展,作为政府加密技术的基础,它已由“高级加密标准”(aes) 中包含的另一种加密算法代替了。aes 是指定的标准密码系统,未来将由政府和银行业用户使用。aes 用来实际编码数据的加密算法与以前的 des 标准不同。aes算法的标准是:1 aes 应该可以公开定义。2 aes 应该是对称的块密码。3 aes 应该设计成密钥长度可以根据需要增加。4 aes 应该可以在硬件和软件中实现。6 将根据以下要素评价符合上述要求的算法:具有安全性(密码分析所需的努力)、计算效率、内存需求、硬件和软件可适用性、简易性、灵活性 三、idea加密算法1、算法简介:idea算法是international data encryption algorithmic 的缩写,意为国际数据加密算法。是由中国学者朱学嘉博士和著名密码学家james massey 于1990年联合提出的,当时被叫作pes(proposed encryption standard)算法,后为了加强抵抗差分密码分,经修改于1992年最后完成,并命名为idea算法。2、算法的安全性分析:安全性:idea的密钥长度是128位,比des长了2倍多。所以如果用穷举强行攻击的话,那么,为了获得密钥需要 次搜索,如果可以设计一种每秒能搜索十亿把密钥的芯片,并且采用十亿个芯片来并行处理的话,也要用上 年。而对于其他攻击方式来说,由于此算法比较的新,在设计时已经考虑到了如差分攻击等密码分析的威胁,所以还未有关于有谁发现了能比较成功的攻击idea方法的结果。从这点来看,idea还是很安全的。四、总结几种算法的性能对比见表21表21算法密钥长度分组长度循环次数des566416三重des112、1686448aes128、192、25612810、12、14idea128648速度:在200mhz的奔腾机上的对比见表22表22cdjgp(+pgcc101)aes30.2mbps68.275mbpsdes(rsaref)10.6mbps16.7mbps3des4.4mbps7.3mbps五、安全性1990年以来,特制的des cracker的机器可在几个小时内找出一个des密钥。换句话说,通过测试所有可能的密钥值,此硬件可以确定用于加密信息的是哪个密钥。假设一台一秒内可找出des密钥的机器(如,每秒试255个密钥),如果用它来找出128-bit aes的密钥,大约需要149万亿年。2.2 非对称加密技术2.2.1 描述非对称密码体制也叫公钥加密技术,该技术就是针对私钥密码体制的缺陷被提出来的。在公钥加密系统中,加密和解密是相对独立的,加密和解密会使用两把不同的密钥,加密密钥向公众公开,谁都可以使用,解密密钥只有解密人自己知道,非法使用者根据公开的加密密钥无法推算出解密密钥,故其可称为公钥密码体制。如果一个人选择并公布了他的公钥,另外任何人都可以用这一公钥来加密传送给那个人的消息。私钥是秘密保存的,只有私钥的所有者才能利用私钥对密文进行解密。2.2.2目的和意义(1)解决大规模网络应用中密钥的分发和管理问题采用分组密码、序列密码等对称密码体制时,加解密双方所用的密钥都是秘密的,而且需要定期更换,新的密钥总是要通过某种秘密渠道分配给使用方,在传递的过程中,稍有不慎,就容易泄露。公钥密码加密密钥通常是公开的,而解密密钥是秘密的,由用户自己保存,不需要往返交换和传递,大大减少了密钥泄露的危险性。同时,在网络通信中使用对称密码体制时,网络内任何两个用户都需要使用互不相同的密钥,只有这样,才能保证不被第三方窃听,因而n个用户就要使用n(n1)/2个密钥。采用公钥密码体制,n个用户只需要产生n对密钥。由此可见,只有公钥密码才能方便、可靠地解决大规模网络应用中密钥的分发和管理问题。(2)实现网络中的数字签名机制对称密钥技术由于其自身的局限性,无法提供网络中的数字签名。这是因为数字签名是网络中表征人或机构的真实性的重要手段,数字签名的数据需要有惟一性、私有性,而对称密钥技术中的密钥至少需要在交互双方之间共享,因此,不满足惟一性、私有性,无法用做网络中的数字签名。相比之下,公钥密码技术由于存在一对公钥和私钥,私钥可以表征惟一性和私有性,而且经私钥加密的数据只能用与之对应的公钥来验证,其他人无法仿冒,所以,可以用做网络中的数字签名服务。2.2.3 rsa公钥加密技术rs a是rivest,shamir,adleman提出基于数论的非对称密钥体制。rsa是建立在大整数分解的困难上的,是一种分组密码体制。rsa建立方法如下:首先随机选两个大素数p,q , 计算n=pq;计算欧拉函数(n)=(p-1)(q-1);任选一个整数e为公开加密密钥,由e求出秘密解密密钥加密/解密:将明文分成长度小于 位的明文块m,加密过程是:c = e(m,e) = mod n 解密过程是:m = d(c,d) = mod n 。一、rsa公钥密码体制的安全性分析rsa的安全性依赖于大整数的因式分解问题。实际上,人们推测rsa的安全性依赖于大整数的因式分解问题,但谁也没有在数学上证明从c和e计算m需要对n 进行因式分解。可以想象可能会有完全不同的方式去分析rsa。然而,如果这种方法能让密码解析员推导出d,则它也可以用作大整数因式分解的新方法。最难以令人置信的是,有些rsa变体已经被证明与因式分解同样困难。甚至从rsa加密的密文中恢复出某些特定的位也与解密整个消息同样困难。二、rsa算法工作原理首先,找出三个数,p,q,r,其中p,q是两个相异的质数,r是与(p-1)(q-1)互质的数.p,q,r这三个数便是privatekey 接著,找出m,使得rm=1mod(p-1)(q-1).这个m一定存在,因为r与(p-1)(q-1)互质,用辗转相除法就可以得到了.再来,计算n=pq.m,n这两个数便是public key编码过程是,若资料为a,将其看成是一个大整数,假设a=n的话,就将a表成s进位(s=n,通常取s=2t),则每一位数均小于n,然后分段编码.接下来,计算b=ammodn,(0=b若p,q是相异质数,rm=1 mod (p-1)(q-1),a是任意一个正整数,b=am mod pq, c=br mod pq, 则c=amod pq 证明的过程, 会用到费马小定理, 叙述如下:m是任一质数,n是任一整数,则nm=nmodm因为rm=1 mod(p-1)(q-1),所以rm=k(p-1)(q-1)+1,其中k是整数因为在modulo中是preserve乘法的(x=y mod z and u=v mod z=xu=yv mod z),所以c=br=(am)r=a(rm)=a(k(p-1)(q-1)+1)mod pq(1)如果a不是p的倍数,也不是q的倍数时: 则a(p-1)=1modp(费马小定理)=a(k(p-1)(q-1)=1 modp a(q-1) =1 mod q(费马小定理)=a(k(p-1)(q-1)=1 modq所以p,q均能整除a(k(p-1)(q-1即a(k(p-1)(q-1)=1modpq即a(k(p-1)(q-1)=1 mod pq=c=a(k(p-1)(q-1)+1)=a mod pq(2)如果a是p的倍数,但不是q的倍数时:则a(q-1)=1 mod q(费马小定理)=a(k(p-1)(q-1)=1 mod q=c=a(k(p-1)(q-1)+1)=a mod q=q|c-a 因p|a=c=a(k(p-1)(q-1)+1)=0 modp=p|c-a 所以,pq|c-a=c=amod pq(3)如果a是q的倍数,但不是p的倍数时,证明同上(4)如果a同时是p和q的倍数时:则pq|a =c=a(k(p-1)(q-1)+1)=0mod pq=pq|c-a=c=a mod pq这个定理说明a经过编码为b再经过解码为c时,a =c mod n(n =pq)但我们在做编码解码时,限制0=an,0=cn,所以这就是说a等于c,所以这个过程确实能做到编码解码的功能。三、rsa 的安全性rsa的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解 rsa就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前, rsa 的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解多个十进制位的大素数。因此,模数n 必须选大一些,因具体适用情况而定。四、 rsa的速度由于进行的都是大数计算,使得rsa最快的情况也比des慢上一倍,无论是软件还是硬件实现,速度一直是rsa的缺陷。一般来说只用于少量数据加密。3、具体设计本设计是用flash 8.0开发的,开发出来后,就是以.fla为后缀的flash文档,然后用flash导出为以.swf为后缀的flsh 影片。但是仍然不是以.exe为后缀的可执行文件。3.1设计介绍本课程设计是用flash 8.0开发出来的,生产以.swf为后缀的flash文档,然后用mdm这个软件生成以.exe为后缀的可执行文件。本课程设计的目的就是:验证一个软件只能允许在一台机器上面使用,如果到另外一台机器必须获取另外的新的机器激活码。可以有效的保护软件公司的软性资产,让软性资产在用户使用的时候变成有型资产。本课程设计分为2个窗口,即高强度加密后的注册页面窗口,如图3-1所示;还有获取本机注册码窗口,如图3-2所示:3-1 高强度加密后的注册页面图3-2 获取本机注册码当点击高强度加密后的注册页面窗口里的获取机器码按钮时,在机器码这个文本栏中,就会显示本机的机器码,如图3-3所示:图3-3 显示本机注册码当点击获取本机注册码窗口里的获取按钮时,在注册码获取的文本栏中,就会显示本机的注册码,如图3-4所示:图3-4 获取本机注册码当把获取的注册码正确的输入到高强度加密后的注册页面窗口里的注册码文本栏里,然后点击后面的输入确认按钮,就会显示输入正确的提示,如图3-5所示:图3-5 输入正确当在高强度加密后的注册页面窗口里的注册码文本栏里输入错误的注册码或者空注册码时,就会给出输入出错,请重新输入的提示,如图3-6所示:图3-6 出错提示3.2设计的代码on (release, keypress )p=mdm.system.gethdserial(c);t=parseint(p, 16)var a=t b=6578716976c=a*bvar myencrypteddata = mdm.encryption.encryptstring(c);if (c=d)o=输入正确,允许进入elseo=输入错误请重新输入; on (release, keypress )p=mdm.system.gethdserial(c);t=parseint(p, 16)var a=t on (release) a = ;b = ;c = ;d = ;o = ;具体思路是:先读取硬盘id,然后把硬盘的id转换成十六进制得到t,在把t赋值给a,然后把a做一个乘法加密,得到c,最后用调用mdm。encryption方法,进行混杂模式加密。4、des算法深入研究 4.1具体分析4.1.1 des 的工作方式des 将消息分成 64 位(即 16 个十六进制数)一组进行加密。des 使用“密钥”进行加密,从符号的角度来看,“密钥”的长度是 16 个十六进制数(或 64 位)。但是,由于某些原因(可能是因为 nsa 给 nbs 的“指引”),des 算法中每逢第 8 位就被忽略。这造成密钥的实际大小变成 56 位。编码系统对“强行”或“野蛮”攻击的抵抗力与其密钥空间或者系统可能有多少密钥有直接关系。使用的位数越多转换出的密钥也越多。密钥越多,就意味着强行攻击中计算密钥空间中可能的密钥范围所需的时间就越长。从总长度中切除 8 位就会在很大程度上限制了密钥空间,这样系统就更容易受到破坏。des 是块加密算法。这表示它处理特定大小的纯文本块(通常是 64 位),然后返回相同大小的密码块。这样,64 位(每位不是 0 就是 1)有 264 种可能排列,des 将生成其中的一种排列。每个 64 位的块都被分成 l、r 左右两块,每块 32 位。4.1.2 des 算法使用步骤 (1) 创建 16 个子密钥,每个长度是 48 位。根据指定的顺序或“表”置换 64 位的密钥。如果表中的第一项是 27,这表示原始密钥 k 中的第 27 位将变成置换后的密钥 k+ 的第一位。如果表的第二项是 36,则这表示原始密钥中的第 36 位将变成置换后密钥的第二位,以此类推。这是一个线性替换方法,它创建了一种线性排列。置换后的密钥中只出现了原始密钥中的 56 位。 (2) 接着,将这个密钥分成左右两半,c0 和 d0,每一半 28 位。定义了 c0 和 d0 之后,创建 16 个 cn 和 dn 块,其中 1=n=16。每一对 cn 和 dn 块都通过使用标识“左移位”的表分别从前一对 cn-1 和 dn-1 形成,n = 1, 2, ., 16,而“左移位”表说明了要对哪一位进行操作。在所有情况下,单一左移位表示这些位轮流向左移动一个位置。在一次左移位之后,28 个位置中的这些位分别是以前的第 2、328 位。通过将另一个置换表应用于每一个 cndn 连接对,从而形成密钥 kn,1=n=16。每一对有 56 位,而置换表只使用其中的 48 位,因为每逢第 8 位都将被忽略。(3) 编码每个 64 位的数据块。 64 位的消息数据 m 有一个初始置换 ip。这将根据置换表重新排列这些位,置换表中的项按这些位的初始顺序描述了它们新的排列。我们以前见过这种线性表结构。使用函数 f 来生成一个 32 位的块,函数 f 对两个块进行操作,一个是 32 位的数据块,一个是 48 位的密钥 kn,连续迭代 16 次,其中 1=n=16。用 + 表示 xor 加法(逐位相加,模除 2)。然后,n 从 1 到 16,计算 ln = rn-1 rn = ln-1 + f(rn-1,kn)。即在每次迭代中,我们用前一结果的右边 32 位,并使它们成为当前步骤中的左边 32 位。对于当前步骤中的右边 32 位,我们用算法 f xor 前一步骤中的左边 32 位。要计算 f,首先将每一块 rn-1 从 32 位扩展到 48 位。可以使用选择表来重复 rn-1 中的一些位来完成这一操作。这个选择表的使用就成了函数 f。因此 f(rn-1) 的输入块是 32 位,输出块是 48 位。f 的输出是 48 位,写成 8 块,每块 6 位,这是通过根据已知表按顺序选择输入中的位来实现的。我们已经使用选择表将 rn-1 从 32 位扩展成 48 位,并将结果 xor 密钥 kn。现在有 48 位,或者是 8 组,每组 6 位。每组中的 6 位现在将经历一次变换,该变换是算法的核心部分:在叫做“s 盒”的表中,我们将这些位当作地址使用。每组 6 位在不同的 s 盒中表示不同的地址。该地址中是一个 4 位数字,它将替换原来的 6 位。最终结果是 8 组,每组 6 位变换成 8 组,每组 4 位(s 盒的 4 位输出),总共 32 位。f 计算的最后阶段是对 s 盒输出执行置换 p,以得到 f 的最终值。f 的形式是 f = p(s1(b1)s2(b2).s8(b8)。置换 p 根据 32 位输入,在以上的过程中通过置换输入块中的位,生成 32 位输出。解密只是加密的逆过程,使用以上相同的步骤,但要逆转应用子密钥的顺序。des 算法是可逆的。4.1.3 算法的安全性分析在知道一些明文和密文分组的条件下,从理论上讲很容易知道对des进行一次穷举攻击的复杂程度:密钥的长度是56位,所以会有2的56次方种的可能的密钥。 在1993年的一年一度的世界密码大会上,加拿大北方电信公司贝尔实验室的 michael wiener 描述了如何构造一台专用的机器破译des,该机器利用一种每秒能搜索5000万个密钥的专用芯片。而且此机器的扩展性很好,投入的经费越多则效率越高。用100万美元构造的机器平均3.5小时就可以破译密码。 如果不用专用的机器,破译des也有其他的方法。在1994年的世界密码大会上,m.matsui 提出一种攻克des的新方法-线性密码分析法。它可使用平均 个明文及其密文,在12台hp9000/735工作站上用此方法的软件实现,花费50天时间完成对des的攻击。 如前所述des作为加密算法的标准已经二十多年了,可以说是一个很老的算法,而在新的加密算法的国际标准出现之前,许多des的加固性改进算法仍有实用价值,同时考虑的以上所述des的安全性已受到了威胁。4.1.4 本设计的变体 三重des(tdea),使用3个密钥,执行3次des算法:加密:c = ek3dk2ek1p解密:p = dk1ek2dk3c特点:安全性得到增强,但是速度变慢。4.3 加密程序:import java.security.*; import javax.crypto.*; public class crypt private static string algorithm = des; /定义 加密算法,可用 des,desede,blowfish static boolean debug = false; static security.addprovider(new vider.sunjce(); /生成密钥, 注意此步骤时间比较长 public static byte getkey() throws exception keygenerator keygen = keygenerator.getinstance(algorithm); secretkey deskey = keygen.generatekey(); if (debug) system.out.println(生成密钥: +byte2hex(deskey.getencoded(); return deskey.getencoded(); /加密 public static byte encode(byte input, byte key) throws exception secretkey deskey = new javax.crypto.spec.secretkeyspec(key, algorithm); if (debug) system.out.println(加密前的二进串: + byte2hex(input); system.out.println(加密前的字符串: + new string(input); cipher c1 = cipher.getinstance(algorithm); c1.init(cipher.encrypt_mode, deskey); byte cipherbyte = c1.dofinal(input); if (debug) system.out.println(加密后的二进串: + byte2hex(cipherbyte); return cipherbyte; /解密 public static byte decode(byte input, byte key) throws exception secretkey deskey = new javax.crypto.spec.secretkeyspec(key, algorithm); if (debug) system.out.println(解密前的信息: + byte2hex(input); cipher c1 = cipher.getinstance(algorithm); c1.init(cipher.decrypt_mode, deskey); byte clearbyte = c1.dofinal(input); if (debug) system.out.println(解密后的二进串: + byte2hex(clearbyte); system.out.println(解密后的字符串: + (new string(clearbyte); return clearbyte; /md5()信息摘要, 不可逆 public static byte md5(byte input) throws exception java.security.messagedigest alg = java.security.messagedigest. getinstance(md5); /or sha-1 if (debug) system.out.println(摘要前的二进串: + byte2hex(input); system.out.println(摘要前的字符串: + new string(input); alg.update(input); byte digest = alg.digest(); if (debug) system.out.println(摘要后的二进串: + byte2hex(digest); return digest; /字节码转换成16进制字符串 public static string byte2hex(byte b) string hs = ; string stmp = ; for (int n = 0; n b.length; n+) stmp = (java.lang.integer.tohexstring(bn & 0xff); if (stmp.length() = 1) hs = hs + 0 + stmp; else hs = hs + stmp; if (n b.length - 1) hs = hs + :; return hs.touppercase(); /* public static void main(string args) throws exception debug = true; / byte key = getkey(); byte key = 好好学习.getbytes(); decode(encode(测试加密.getbytes(), key), key); md5(测试加密.getbytes(); */ 5、结束语本设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学生来说掌握计算机开发技术是十分重要的,尤其是我们学软件工程的学生。这次的毕业设计,对于我来说是一个挑战。在学校学习的时候,我学了c语言,学了c+,还学了java语言,通过上网查了许多的资料,我最终选择了用flash 8.0来做页面,在用从没有接触过的as 2.0 来做脚本,最终完成了本次的毕业设计。用从没接触过的as 2.0来做,是我全新的尝试,也是我对未知的探索。其中也充满了困难和艰辛,例如,我把每个按钮的功能都设计好了,函数也设计好了,但是全部整合在一起的时候,一个接一个的错误就出现了,这不能不说是对知识的欠缺。通过这次的毕业设计,我懂得了无论什么事都要去做才会发现问题,才有可能去解决问题。对知识的学习,不能潜偿辄止,要深入去学习,去了解,去钻研,这样才会有所收获。有许多东西,许多事,不是想像中的那么容易,不去实践,永远也不会有提高,尤其是学习计算机。这次的毕业设计,我也深感压力,因为平时对编程序这方面没有过多的关注,平时所学到的一点理论知识在实际应用中也很有限,在开发本次的毕业设计的初期,明显的感觉准备不充分,使自己遇到了很多的难题,于是只能在茫茫的网上去寻找对自己有用的点点滴滴。从最初的查资料,在到选题,然后进行可行性分析,在到后来的制作页面,编码,最后调试,都让我感到力不从心。虽然,本次的毕业设计中有些模块是借鉴别人的,毕竟,在编程方面,我还不太成熟,要成为高手还有很长的一段路要走。通过这次的毕业设计,我了解到其实编一个程序也不像刚开始所想象中的那么难,那么复杂,只要肯用心用脑,肯去花功夫钻研就会一定会有收获,其实在以前的课
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨界投资与颠覆性创新-洞察及研究
- 小学体育课件跳绳教学
- 2025至2030中国静脉采血装置行业项目调研及市场前景预测评估报告
- 供应链年中工作总结
- 物控工作总结报告
- 信息技术产业园区空地租赁与云计算数据中心合作合同
- 高端酒店品牌代理售后服务与客户满意度调查协议
- 子女权益优先离婚协议书:财产分割示范文本
- 物业总经理任期战略规划与执行监督合同
- 离职补偿协议范本(含离职补偿及全球服务)
- 毒品成瘾原因课件
- 金太阳福建省2025-2026学年高三上学期9月开学联考数学试卷
- 2025年公需课《人工智能赋能制造业高质量发展》试题及答案
- 造口凸面底盘临床应用共识
- 2025-2026学年外研版七年级英语上册(全册)教学设计(附目录)
- 2025-2026学年人美版(2024)小学美术三年级上册教学计划及进度表
- 连锁药店考勤管理制度
- 安全防范系统升级和服务协议
- 2025年吉林省教育系统后备干部考试题及答案
- 整合照护课件
- 富士康自动化培训知识课件
评论
0/150
提交评论