版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、结合编程实例说明计算机加密的原理和方法班级:学号:姓名:报告日期:2013年口月27日1、基础知识介绍无论是网络传输中使用的安全传输协议,还是安全手段或安全措施,它们都需要使用加密算法和相应的解密算法。不了解与此相关的加密原理和算法,就很难深刻地认识各种安全传输协议,以及实现网络安全所采用的数字凭证、数字签名等技术。密码学是一门古老而深奥的学科,对一般人来说是非常陌生的。长期以来,只在很小的范围内使用,如军事、外交、情报等部门。计算机密码学是研究计算机信息加密、解密及其变换的科学,是数学和计算机的交叉学科,也是一门新兴的学科。随着计算机网络和计算机通讯技术的发展,计算机密码学得到前所未有的重视
2、并迅速普及和发展起来。在国外,它已成为计算机安全主要的研究方向。密码学的历史比较悠久,在四千年前,古埃及人就开始使用密码来保密传递消息。两千多年前,罗马国王JuliusCaesare(恺撒)就开始使用目前称为“恺撒密码的密码系统。但是密码技术直到本20世纪40年代以后才有重大突破和发展。特别是20世纪70年代后期,由于计算机、电子通信的广泛使用,现代密码学得到了空前的发展。加密算法包括:对称加密算法、公开密钥算法和DES对称加密算法。二、计算机加密基本原理和方法(1)对称加密算法基于密钥的算法通常有两类:对称算法和公开密钥算法(非对称算法)。对称算法有时又叫传统密码算法,加密密钥能够从解密密钥
3、中推算岀来,反过来也成立。在大多数对称算法中,加解密的密钥是相同的。对称算法要求发送者和接收者在安全通信之前,协商一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加解密。对称算法的加密和解密表示为:EK(M)=CDK(C)=M(2)密钥加密算法公开密钥算法(非对称算法)的加密的密钥和解密的密钥不同,而且解密密钥不能根据加密密钥计算出来,或者至少在可以计算的时间内不能计算岀来。之所以叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。加密密钥叫做公开密钥(简称公钥),解密密钥叫做私人密钥(简称私钥)。公开密钥K1加
4、密表示为:EK1(M)=Co公开密钥和私人密钥是不同的,用相应的私人密钥K2解密可表示为:DK2(C)=Mo(3)凯撒密码算法原理洛密码学中存在着各种各样的置换方式,但所有不同的置换方式都包含2个相同的元素。密钥和协议(算法)。凯撒密码的密钥是3,算法是将普通字母表中的字母用密钥对应的字母替换。置换加密的优点就在于它易于实施却难于破解.发送方和接收方很容易事先商量好一个密钥,然后通过密钥从明文中生成密文,即是敌人若获取密文,通过密文直接猜测其代表的意义,在实践中是不可能的。凯撒密码的加密算法极其简单。其加密过程如下:在这里,我们做此约定:明文记为密文记为c,加密变换记为E(kl,m)(其中kl
5、为密钥),解密变换记为D(k2,m)(k2为解密密钥)(在这里kl=k2,不妨记为k)。凯撒密码的加密过程可记为如下一个变换:c=m+kmodn(其中n为基本字符个数)同样,解密过程可表示为:m=c+kmodn(其中n为基本字符个数)对于计算机而言,n可取256或128,m、k、c均为一个8bit的二进制数。显然,这种加密算法极不安全,即使采用穷举法,最多也只要255次即可破译。当然,究其本身而言,仍然是一个单表置换,因此,频率分析法对其仍是有效的。方法:恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3的时候(解
6、密时的密钥就是3):明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。例如:明文:THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG密文:WKHTXLFNEURZQIRAMXPSVRYHUWKHODCBGRJ恺撒密码的加密、解密方法还能够通过同余数的数学方法进行计算。首先将字母用数字代替,A=0,B二1,,Z=25o此时偏移量为n的加密方法
7、即为:E(x)=(x+n)mod2解密就是:D(x)=(x-n)mod23、环境介绍编程语言C语言/JAVA编译环境MicrosoftVisualStudio20008/eclipse操作系统Windows,4、实例说明算机加密的原理和方法实例止利用对称加密算法对“1234567进行加密,并进行解密程序源代码:#include/DES加密算法C语言实现classSubKey定义手密钥为一个类public:intkey;subkey16);/定义子密钥对象数组classDESintencipher_decipher;/判断加密还是解密intkey_in8ji8;/用户原始输入的64位二进制数in
8、tkey_out87;/除去每行的最后一位校验位intc0_d087;/存储经PCJ转换后的56位数据intc07,d04;分别存储cO,dOinttext88;/64位明文inttext_ip;/经IP转换过后的明文intA月;A,B分别存储经IP转换过后明文的两部分,便于交换inttemp86;/存储经扩展置换后的48位二进制值inttempl86;/存储和子密钥异或后的结果ints_result;存储经S变换后的32位值inttext_p84;/经P置换后的32位结果intsecretp88;/经逆IP转换后的密文public:voidKey_Putting();voidPC_1();i
9、ntfunction(int,int);异或voidSubKey_Production();voidIP_Convert();voidf();voidP_Convert();voidOut_secret();;_voidDES:Key_Putting()/得到密钥中对算法有用的56位cout“请输入64位的密钥亍8列且每行都得有奇数个l):n;for(inti=0;i8;i+)for(intj=0;jkey_iif(j!=7)key_outi0=key_ini0;运行结果分析试对“1234567进行加密,再将其解密:输入1234567:33DbugTsctl.x-oInpcaet:KPlMne
10、oxfcI1230)out.write(buffer,0,r);cis.close();is.close();out.close();/*文件采用DES算法解密文件*paramfile*己加密的文件如C:/加密后文件.txt*paramdestFile*解密后存放的文件名如c:/test/解密后文件.txt*/publicvoiddecryptFile(Stringfile,Stringdest)throwsExceptionCiphercipher=Cipher.getlnstanee(DES);cipher.init(Cipher.DECRYPT_MODE,this.key);Inputs
11、treamis=newFilelnputStream(file);Outputstreamout=newFileOutputStream(dest);CipherOutputStreamcos=newCipherOutputStream(out,cipher);bytebuffer=newbyte1024;intr;while(r=is.read(buffer)=0)cos.write(buffer,0,r);cos.close();out.close();is.close();publicstaticvoidmain(Stringargs)throwsExceptionDESUtildes=
12、newDESUtil(1234567);/DES加密文件/des.encryptFile(G:/test.doc,G:/加密test.doc);/DES解密文件/des.decryptFile(G:/加密test.doc,G:/解密test.doc);Stringstri=“要加密的字符串test;/DES加密字符串Stringstr2=des.encryptStr(strl);运行结果分析试对公开密钥1234567进行加密,再将其解密:输入公开密钥1234567::InputVJLrtoxt;=匸刁etuQTet1exoFi.9Gammrxa22./DES解密字符串StringdeStr=d
13、es.decryptStr(str2);System,out.println(加密前System,out.println(加密后System,out.println(11解密后+strl);+str2);+deStr);输入公开密钥2234567的密文pqrstuv:回车后岀现解密后的明文1234567:实例3:利用公开加密算法对T234567进行加密,并进行解密源程序代码#includevoidmain()charp1000;charc1000;intkey,m;key=5;/*定义一个移位个数为5,即加密向右移5位,解密则相反*/printf(HpleaseinputthePlaintex
14、t:n“);gets(p);/*读取字符串,直至接受到换行符停止,并将读取的结果存放在p1000中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。*/for(i=0;pi!=0;i+)ci=(pi-,a,+key)%26+,a,;/*加密算法,所有明文符号由向右移5位的密文代替*/ci=O;printf(theCiphertextis:n%sn,c);/*输岀加密后的密文*/printf(npleaseinputtheCiptertext:rT);gets(c);/*读取字符串,直至接受到换行符停止,并将读取的结果存放在c1000中。换行符不作为读取串的内容,读
15、取的换行符被转换为null值,并由此来结束字符串。7for(i=0;ci!=0;i+)pi=,z,-(,z+key-ci)%26;广解密算法,所有明文符号由向左移5位的明文代替*/pi=、O:printf(thePlaintextis:n%sn,p);/*输出解密后的明文*/return;运行结果分析试对明文security进行加密,再将其解密:输入明文security:T*l*dLr;:ouib*1-tzy回车后,输出加密后的密文:xjhzwnyd3P%DbugVTxtlexypleaseinputthePlaintext:securitytheCiphertextis:xjhzwnydpleaseinputtheCiptertext:输入security的密文xjhzwnycT:回车后出现解密后的明文security:S3HD:DebugText1.exeHpLeaseinputthePext:secuT-itsPticCiplicrtext=DKjhzwnsFdpLeaseinputtheCipter-text:”3hzwnithePlaintextis:secuT-itciPvessanykeyfzocontinue5、总结分析丄学鬲必过一学期的对于信息安全概论课程的学习,我对于信息安全
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州省六盘水市盘州市2025-2026学年八年级上学期期中生物学试题(含答案)
- 生态旅游规划师评价表
- 广东省佛山市三水区2025-2026学年七年级上学期期中生物学试题(含答案)
- 银行客户经理业务增长及客户满意度KPI考核表
- 1-3-Heptadecanoin-2-palmitin-生命科学试剂-MCE
- 1-3-5-tri-1H-Imidazol-1-yl-benzene-1-1-1-Benzene-1-3-5-triyltri-1H-imidazole-生命科学试剂-MCE
- 部编版初中英语下册第7单元同步练习题及答案
- 2026年河南省郑州市中原区实验中学七年级语文第10单元现代文阅读专项训练习题及答案
- 2026年部编版初中语文七年级上册第3单元练习题及答案
- 餐厅厨师菜品制作标准化手册
- 常用电子元器件培训教材
- GB/T 47047-2026海上结构物海上移动平台锚链轮
- 乡镇便民中心考核制度
- 新疆馕介绍教学课件
- 钢结构厂房柱安装施工方案
- 医疗机构服务态度与微笑服务
- 《色彩基础》第5章色彩归纳写生训练
- 药事管理学考试真题及答案
- 浙江省精诚联盟2025-2026学年高一上学期10月月考化学试题(含答案)
- LNG消防安全培训内容课件
- 养殖蝎子知识培训课件
评论
0/150
提交评论