java文件加密解密实验报告_《网络信息安全技术》_实验报告_破译vigen&amp#232;re_密码加密的密文...

《《网络信息安全技术》_实验报告_破译vigen&amp#232;re_密码加密的密文》由会员分享,可在线阅读,更多相关《《网络信息安全技术》_实验报告_破译vigen&amp#232;re_密码加密的密文(21页珍藏版)》请在人人文库网上搜索。

1、实验报告1课程名称网络信息安全技术任课教师姓 名朱云初学 号院 系软件学院专 业软件工程一、 实验名称:实验一、破译vigenre 密码加密的密文二、 实验目的:熟悉vigenre 密码加密及解密方法三、实验内容及要求密钥长度316;明文为普通英文文章(仅含小写字母);实现vigenre 加密、解密;破译密文提交的报告:选择的密钥、明文、加密后的密文;破译密文的过程;分析使用、破译vigenre密码时应当考虑的所有因素。四、实验材料、工具、或软件普通计算机一台,并安装Java Applet、IE、DreamweaverMX2004等软件五、实验步骤(或记录)1、选择的密钥、明文、加密后的密文密。

2、钥为:Computer明文为:My name is Zhu Yun beginning of the South China University of Technology Software Engineering, Zhaoqing, the students, the first phase of the new school curriculum is called network information security technology, classroom teacher is Feng Yuxiang.加密后的密文:Om cufi kg Obn Pwb qyzmepwzv 。

3、hj vvq Mhykj Owcge Wbukykwzvm dz Xvevzdfhkp Gaunpeig Qcabrvgfuca, Qjoafcgk, htt lxlfszim, kjs uckwk dtpmx fh fwy rvy erbhsc qgglbglniy cl tczxtx rvvkage mehcdbummfp etwnvzvm iyvleqzavs, tnoehlhsd hqpwaii we Zxrx Mgmctrx.2、破译过程按照vigenre 密码技术编写网页文件,代码以下:维吉尼亚(Vigenre)密码 body font-size:18px; font-family。

4、:楷体_GB2312, 仿宋_GB2312; caption text-align:center; font-size:20px; font-weight:bold; center font-size:28px; font-weight:bold; .matrix border:#BBBBFF solid thick; cursor:pointer; .matrix td width:18px; height:18px; border:#aaccaa 1px solid; text-align:center; .matrix th width:18px; height:18px; border。

5、:#DDDDFF 1px solid; background-color:#EEEEFF; text-align:center; .cal padding:20px 20px 20px 20px; .cal td,th border-width:0px; /-声明全局变量- var AU=A.charCodeAt(0);/大写A的编码 var AL=a.charCodeAt(0);/小写a的编码 var ZU=Z.charCodeAt(0);/大写Z的编码 var ZL=z.charCodeAt(0);/小写z的编码 var col1,col2;/方阵的列 /-方阵函数- function w。

6、riteThead()/方阵表头部 document.writeln( ); for(var i=0;i+String.fromCharCode(AU+i)+); document.writeln(); function forTo(i,j)/向前映射 return (i+j)%26; function backTo(i,j)/向后映射 return (i+26-j)%26; function writeTbody(fun,id)/方阵体,传入映射函数和表编号 /document.writeln(); for(var i=0;i); /document.writeln(); document.。

7、writeln(); for(var i=0;i); document.writeln(+String.fromCharCode(AU+i)+); for(var j=0;j+String.fromCharCode(AU+fun(i,j)+); document.writeln(); document.writeln(); function initCols()/初始化列向量 col1=document.getElementById(matrix1).getElementsByTagName(col); col2=document.getElementById(matrix2).getElem。

8、entsByTagName(col); function pointIn(j,cols)/鼠标处于j列时修改此列颜色 colsj+1.style.backgroundColor=#DDDDFF; function pointOut(j,cols)/鼠标移出j列时恢复此列颜色 colsj+1.style.backgroundColor=; /-加密解密函数- function isUpLetter(c)/判断是否为大写字符编码 if(c=AU&c=AL&c 网络信息安全技术课程破译vigenre密码加密的密文作业 密钥: 明文: οnclick=jiami() / 密文: 加密方阵 密钥(行/列。

9、)+明文(列/行)=密文 writeThead(); writeTbody(forTo,1); 解密方阵 密文(行)-密钥(列)=明文 writeThead(); writeTbody(backTo,2); 以上代码通过IE运行,显示界面如下图:2、破译过程要确定密钥,即确定k1 , k2 , k3 , k4 , k5 的值, 可以再一次使用指数重合法。的每个子串Yi 是相应的明文xi 移动ki 个位置得到的,明文中A 、B 、. . . 、Z 出现的概率.Ki可能取值为0-25,逐一代入得出密钥:computer。通过加密方阵及解密方阵进行对比,在明文框或密文框内输入即可相互得到结果。如果破。

10、译更长的密码,在程序中修改相关的数据即可。明文输入可以是普通文章且带标点符号,程序可以过滤非法字符。六、实验存在问题和解决办法七、意见和建议八、教师评语(或成绩)教师签字: 年 月 日实验报告2课程名称网络信息安全技术任课教师冯玉翔姓 名朱云初学 号4院 系软件学院专 业软件工程一、 实验名称:实验二、用C实现RSA 密码二、 实验目的:熟悉用C实现RSA 密码三、实验内容及要求用C 语言实现RSA 密码;产生随机素数p,q;选择公钥e,生成对应的私钥d;加密1MB 的数据(形式为00,01,ff,00,01,ff,);恢复上述加密得到的密文;反复执行10次,计算运行时间四、实验材料、工具、或。

11、软件普通计算机一台,并安装普通使用软件五、实验步骤(或记录)原理产生随机两素数p和q取n=p*q取t=(p-1)*(q-1)取任何一个数e,要求满足e实践操作接下来做一个实践,看看实际的操作:找两个素数:p=47q=59这样n=p*q=2773t=(p-1)*(q-1)=2668取e=63,满足eperl -e foreach $i (1.9999) print($i),last if $i*63%2668=1 847即d847最终我们获得关键的n=2773d=847e=63取消息M=244我们看看加密:c=M*d%n = 244*847%2773用perl的大数计算来算一下:C:Temppe。

12、rl -Mbigint -e print 244*847%2773465即用d对M加密后获得加密信息c465解密:我们可以用e来对加密后的c进行解密,还原M:m=c*e%n=465*63%2773 :C:Tempperl -Mbigint -e print 465*63%2773244即用e对c解密后获得m=244 , 该值和原始信息M相等。字符串加密把上面的过程集成一下我们就能实现一个对字符串加密解密的示例了。每次取字符串中的一个字符的ascii值作为M进行计算,其输出为加密后16进制的数的字符串形式,按3字节表示,如01F代码如下:#!/usr/bin/perl -w#RSA 计算过程学习。

13、程序编写的测试程序#watercloud 2003-8-12#use strict;use Math:BigInt;my %RSA_CORE = (n=2773,e=63,d=847); #p=47,q=59my $N=new Math:BigInt($RSA_COREn);my $E=new Math:BigInt($RSA_COREe);my $D=new Math:BigInt($RSA_COREd);print N=$N D=$D E=$En;sub RSA_ENCRYPT my $r_mess = shift _;my ($c,$i,$M,$C,$cmess);for($i=0;$i。

14、 new($c);$C=$M-copy(); $C-bmodpow($D,$N);$c=sprintf %03X,$C;$cmess.=$c;return $cmess;sub RSA_DECRYPT my $r_mess = shift _;my ($c,$i,$M,$C,$dmess);for($i=0;$i new($c);$C=$M-copy(); $C-bmodpow($E,$N);$c=chr($C);$dmess.=$c;return $dmess;my $mess=RSA 娃哈哈哈;$mess=$ARGV0 if ARGV = 1;print 原始串:,$mess,n;my $。

15、r_cmess = RSA_ENCRYPT($mess);print 加密串:,$r_cmess,n;my $r_dmess = RSA_DECRYPT($r_cmess);print 解密串:,$r_dmess,n;#EOF测试一下:C:Tempperl rsa-test.plN=2773 D=847 E=63原始串:RSA 娃哈哈哈加密串:5CB6CD6BC58AAA74A0AA74A0AA74A6C70A46C70A46C70A4解密串:RSA 娃哈哈哈C:Tempperl rsa-test.pl 安全焦点(xfocus)N=2773 D=847 E=63原始串:安全焦点(xfocus)。

16、加密串:3393EC12F0A466E0AA9510D025D7BA0712DC3379F47D51C325D67B解密串:安全焦点(xfocus)评估前面已经提到,rsa的安全来源于n足够大,我们测试中使用的n是非常小的,根本不能保障安全性,我们可以通过RSAKit、RSATool之类的工具获得足够大的N 及D E。通过工具,我们获得1024位的N及D E来测试一下:n=0x328C74784DF31119C526D18098EBEBB943B0032B599CEE13CC2BCE7B5FCD15F90B66EC3A85F5005DBDCDED9BDFCB3C4C265AF164AD5588。

17、4D8278F791C7A6BFDAD55EDBC4F017F9CCF1538D4CB383B47D80EC74B51276CA05B5D6346B9EE5AD2D7BE7ABFB36E37108DDD2ED173CCA50ED7E2BCd=0x10001e=0xE760A3804ACDE1E8E3D7DC0197F9CEF6282EF552E8CEBBB7434B01CB19A9D87A3106DD28C523C29954C5D86B36EE4919CA8CE08718C3BA98F635EB9EA9200B25906D91B80A47B77324E66AFF2C4D70D8B1C69C50。

18、A9D8B4B7A3C9EE05FFF3A16AFCDDA1DCABE9861A4789BD782A592D2B1965设原始信息M=0x33用perl来运算:A) 用d对M进行加密如下:c=M*d%n :C:Tempperl -Mbigint -e $x=Math:BigInt-bmodpow(0x2233, 0x10001, 0x328C74784DF31119C526D18098EBEBB943B0032B599CEE13CC2BCE7B5FCD15F90B66EC3A85F5005DBDCDED9BDFCB3C4C265AF164AD55884D8278F791C7A6BFDAD55E。

19、DBC4F017F9CCF1538D4CB383B47D80EC74B51276CA05B5D6346B9EE5AD2D7BE7ABFB36E37108DD6D2ED173CCA50ED7E2BC);print $x-as_hex0x17b287be418c69ecd7c39227ab681ac422fcc84bb35d8ab304de288a8d4434b73d2576bd45692b007f3a2f7c5f5aa1d99ef3866af26a8eed1d4cc4b293e26bc0a1dc67ecaa6b3028f9461a3b1533ec0cbf10d8ad47452a12db0601c。

20、5e8beda686dd96d2acd59ea89b91fc3f6d90898即用d对M加密后信息为:c=0x17b287be418c69ecd7c39227ab681ac422fcc84bb35d8ab304de288a8d4434b73d2576bd45692b007f3a2f7c5f5aa1d99ef3866af26a8eed1d4cc4b293e26bc0a1dc67ecaa6b3028f9461a3b1533ec0cbf10d8ad47452a12db0601c5e8beda686dd96d2acd59ea89b91fc3f6d90898B) 用e对c进行解密如下:m=c*e%n :。

21、C:Tempperl -Mbigint -e $x=Math:BigInt-bmodpow(0x17b287be418c69ecd7c39227ab681ac422fcc84bb35d8ab304de288a8d4434b73d2576bd45692b007f3a2f7c5f5aa1d99ef3866af26a8eed1d4cc4b293e26bc0a1dc67ecaa6b3028f9461a3b1533ec0cb65f10d8ad47452a12db0601c5e8beda686dd96d2acd59ea89b91fc3f6d90898, 0xE760A3804ACDE1E8E3D7DC01。

22、97F9CEF6282EF552E8CEBBB7434B01CB19A9D87A3106DD28C523C29954C5D86B36EE4919CA8CE08718C3BA98F635EB9EA9200B25906D91B80A47B77324E66AFF2C4D70D8B1C69C50A9D8B4B7A3C9EE05FFF3A16AFCDDA1DCABE9861A4789BD782A592D2B1965, 0x328C74784DF31119C526D18098EBEBB943B0032B599CEE13CC2BCE7B5FCD15F90B66EC3A85F5005DBDCDED9BDFCB。

23、3C4C265AF164AD55884D8278F791C7A6BFDAD55EDBC4F017F9CCF1538D4CB383B47D80EC74B51276CA05B5D6346B9EE5AD2D7BE7ABFB36E37108DDD2ED173CCA50ED7E2BC);print $x-as_hex0x33(我的P4 1.6G的机器上计算了约5秒钟)得到用e解密后的m=0x33 = MC) RSA通常的实现RSA简洁幽雅,但计算速度比较慢,通常加密中并不是直接使用RSA 来对所有的信息进行加密,最常见的情况是随机产生一个对称加密的密钥,然后使用对称加密算法对信息加密,之后用RSA对刚才。

24、的加密密钥进行加密。RSA算法实现JAVA源代码:filename:RSA.java/* Created on Mar 3, 2005* TODO To change the template for this generated file go to* Window - Preferences - Java - Code Style - Code Templates*/import java.math.BigInteger;import java.io.InputStream;import java.io.OutputStream;import java.io.FileInputStream。

25、;import java.io.FileOutputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.FileWriter;import java.io.FileReader;import java.io.BufferedReader;import java.util.StringTokenizer;/* author Steve* TODO To change the template for this generated type comment go to* Wind。

26、ow - Preferences - Java - Code Style - Code Templates*/public class RSA /* BigInteger.ZERO*/private static final BigInteger ZERO = BigInteger.ZERO;/* BigInteger.ONE*/private static final BigInteger ONE = BigInteger.ONE;/* Pseudo BigInteger.TWO*/private static final BigInteger TWO = new BigInteger(2)。

27、;private BigInteger myKey;private BigInteger myMod;private int blockSize;public RSA (BigInteger key, BigInteger n, int b) myKey = key;myMod = n;blockSize = b;public void encodeFile (String filename) byte bytes = new byteblockSize / 8 + 1;byte temp;int tempLen;InputStream is = null;FileWriter writer 。

28、= null;try is = new FileInputStream(filename);writer = new FileWriter(filename + .enc);catch (FileNotFoundException e1)System.out.println(File not found: + filename);catch (IOException e1)System.out.println(File not found: + filename + .enc);/* Write encoded message to filename.enc*/try while (tempLen = is.read(bytes, 1, blockSize / 8) 0) for (int i = tempLen + 1; i basepow within the modular* domain of mod.* param base the base to be raised* param pow the power to which the base will be raisded* param mod the modular domain over which to perform this operation* return basepow withi。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程设计报告书 课程名称 面向对象程序设计 设计题目 文本文档的加密解密 2013年 1 月 "1 设计时间 " "2013年1月14日-2013年1月18日 " "2 设计目的 " "面向对象程序设计是一门实践性很强的计算机专业基础课程。通过实践加深学生对面" "向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设" "计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学" "生的应用能力。 " "3 设计任务 " "对文件进行加密解密 " "4 设计内容 " "4.1 需求分析 " "(1)给定任意一个文本文件,进行加密,生成另一个文件。 " "(2)对加密后的文件还原。 " "4.2 总体设计 " "4.2.1 包的描述 " "导入了java.awt; java.awt.event; java.io; javax.swing等包。 " "4.2.2 类的描述 " "Myframe类;E1类。其中Myframe类继承Frame类;可以扩展Frame的功能并且可以实例" "化的多种功能,这个类也实现了ActionListener这个接口,它是Java中关于事件处理" "的一个接口,ActionListener用于接收操作事件的侦听器接口。对处理操作事件感兴" "趣的类可以实现此接口,而使用该类创建的对象可使用组件的 addActionListener " "方法向该组件注册。在发生操作事件时,调用该对象的 actionPerformed 方法。 " "4.3 页面设计 " " " " " " " " " " " " " "图4.3-1 显示页面 " "代码实现: " "addWindowListener(new WindowAdapter() " "{ " "public void windowClosing(WindowEvent e) " "{ " "System.exit(0); " "} " "}); " " " " " " " " " " " " " " " " " " " "图4.3-2 选择所要加密的文本文件 " "代码实现: " "public void actionPerformed(ActionEvent e)//查找读入文件 " "{ " "if(e.getSource()==itemOpen) " "{ " "filedialog_load.setVisible(true); " "texta.setText(null); " "String s; " "if(filedialog_load.getFile()!=null) " "{ " "try " "{ " "File file=new " "File(filedialog_load.getDirectory(),filedialog_load.getFile()); " "FileReader file_reader=new FileReader(file);//读取字符流 " "BufferedReader in=new BufferedReader(file_reader); " "while((s=in.readLine())!=null) " "texta.append(s+'\n'); " "in.close(); " "file_reader.close(); " "} " "catch (IOException e1) " "{ " "} " "} " "} " " " " " "图4.3-3 加密后界面 " "代码实现: " "if(e.getSource()==button1) " "{ " "char " "a[]=texta.getText().toCharArray();/*把texta中获得的文本,进行初始化,与原 " "字符串长度相等,并将该字符串对象的全部字符复制到该数组a[]中*/ " "texta.setText(null); " "int n; " "char secret=' '; " "for(int i=0;i<a.length;i++) " "{ " "char c=(char)(secret^a[i]);//进行异或运算 " "texta.append(""+c); " "} " "} " " " " " "图4.3-4 解密后的界面 " "代码实现: " "if(e.getSource()==button2) " "{ " "char a[]=texta.getText().toCharArray(); " "texta.setText(null); " "int n; " "char secret=' '; " "for(int i=0;i<a.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值