最新密码学实验报告x_ctf密码学解题思路
Word
Word 文档
院 系:数学与统计学学院
专 业:信息与计算科学
年 级: 11级
课程名称: XXXXX
学 号: XXXXX
XXXXX
姓 名: XXXXX
指导教师: XXXXX
2014年10月26日
年级
班 号
学号
专业
姓名:
实验 名称
实验一 Enigma密码
实验 类型
设计型
综合型
创新型
实 验
目
的
或
要通过使用Engima密码模拟器,加深对古典密码体制的了解,为深入学习现代 密码学奠定基础。
目
的
或
要
1.实验原理
ENIGMA看起来像一个装满了复杂而精致的元件的盒子, 其部被分解成相当
图1-1m f st示磊a -* B b A c
图1-1
m f st示磊
a -* B b A c — D d T F e —* E
实
验
原
理(由图可知,水平面板的下面部分是有 26
实
验
原
理
(
现在使用的计算机键盘。 键盘上方就是显示器, 它由标示了同样字母的 26个小
算法流程灯组成,当键盘上的某个键被按下时,和此字母被加密后的密文相对应的小灯 就在显示器上亮起来。在显示器的上方是三个转子,它们的主要部分隐藏在面 板之下。
算法流程
键盘、转子和显示器由电线相连, 电线把键盘的信号对应到显示器不同的小
灯上去。在示意图中我们可以看到,如果按下 a键,那么灯B就会亮,这意味
着a被加密成了 B。同样地我们看到,b被加密成了 A, c被加密成了 D, d被 加密成了 F,e被加密成了 E,f被加密成了 C。于是如果我们在键盘上依次键入 cafe,显示器上就会依次显示 DBCE。这是最简单的加密方法之一,把每一个字
母都按一一对应的方法替换为另一个字母,这样的加密方式叫做 简单替换密
码”。
简单替换密码在历史上很早就出现了。著名的 凯撒法”就是一种简单替换
法,它把每个字母和它在字母表中后若干个位置中的那个字母相对应。比如取 后三个位置,那么字母的一一对应就如下表所示:
明码字母表: abcdefghijkl mn opqrstuvwxy
密码字母表:DEFGHIJKLMNOPQRSTUVWXYZABC
于是我们就可以从明文得到密文:
明文: veni, vidi, vici
密文:YHAL, YLGL, YLFL
2实验步骤
(1)消息发送者利用 Engima模拟器进行下列操作:
明文: INFORMATION SECURITY
模拟器参数设置:UKW: B
Walze n: I II V
Rin gstellu ng: F-06 V-22 N-14
Stecker: BG CD ER FV HN IU JK LM OP TY
生成:在转子的起始位置: XWB,生成INFORMATION SECURITY的密文;
模拟器显示如图2-1。
mil. -cwmBdaHL^iEi
■ffl* If
也MrHM. 4 Vfli m IT*
实 验 结 果 分 析 及 心 得 体 会
5 ? ? ? ?①②?①?冷
④⑤ ? ? ? (E)@ ?
INFOR M^TIO NSECU
TTIZJ OCYITE 三三二二m HAVE.
图2-1
将转子的起始位置设为 ABC, XWB的密文如图2-2 :
帶?①②?o?
1 ◎⑤
? I
图2-2
传递给接收者的信息截图:
Enigma Settings
UKW z B
Water : I II v
Fiing$馆llung : F-06 v-2 2 N-14
Stecker : bg cd fv hh nr jk iw op ty
Saved A? : CAU sers\EriQht_color\DesktopMJntitled eni
To 匚
To 匚 I ip board
图2-3
(2)接收者收到信息后:
接收者收到信息对 XWB的密文和INFORMATION SECURIT丫的密文进行 解密,给出明文,如图 2-4,图2-5 。
图2-4
图2-5
年级班号学号专业信息与计算科学实验实验设计型综合型创新型名称
年级
班号
学号
专业
信息与计算科学
实验
实验
设计型
综合型
创新型
名称
实验三基于构件的
B/S三层体系结构设计
类型
实 验 目 的 或 要 求
结构的方法。理解 JavaBean的概念,掌握 JSP中JavaBean的使用,编写基于组件的 B/S程序。
1实验原理
1.1 JSP+APPLET+JAVABEAN 结构
4+1视图是从5个不同的视角包括逻辑试图、 进程视图、物理视图、开发视图、场 景视图来描述软件体系结构。
每一个视图只关心系统的一个侧面, 5个试图结合在一起 才能反映系统的软件体系结构的全部容。
根据4+1视图,场景视图如图1-1所示:
实验原理{算法流程图1-1场景视图
实验原理{算法流程
使用JSP+APPLET+JAVABEAN结构实现程序:
程序逻辑结构:
客户端通过浏览器下载 APPLET和加密解密算法jar包,把密码加密成密文后发往
服务器。
服务器接收到后调用 JAVABEAN组件的方式解密密文,得到密码,连接数据库, 查询数据库,对登陆信息中用户名和密码验证。
JavaBean 组件
JavaBean就是一个Java类,也就意味着,JAVA的一切特性,此处都可以使用,此 JavaBean没有图形显示代码,只是完成基本业务逻辑, JavaBean可以使用JAVA的封
装、继承、多态,使用 JavaBean封装许多重复调用的代码,使用 JavaBean可以达到显
示与业务的分离,显示使用 JSP,业务使用JavaBean
JavaBean的优点:
提高代码的可复用性
—对于通用的事务处理逻辑,数据库操作等都可以封装在 JavaBean中,通过
调用JavaBean的属性和方法可以快速的进行程序设计。
程序易于开发维护
—实现逻辑的封装,使事务处理和显示互不干扰。
支持分布式运用
— 多用JavaBean,尽量减少java代码和Jsp的混编。
*rchiv? hks fikre lor tbt? lor chi?
W*b CKX^ul* Web model枣
图1-2 web服务器目录结构
Applet 组件
Applet或Java小应用程序是一种在 Web环境下,运行于客户端的Java程序组件。
它也是上世纪90年代中期,Java在诞生后得以一炮走红的功臣之一。
通常,每个Applet 的功能都比较单一(例如仅用于显示一个舞动的 Logo),因此它被称作 小应用程序”。
Applet必须运行于某个特定的 容器”,这个容器可以是浏览器本身,也可以是通过
各种插件,或者包括支持 Applet的移动设备在的其他各种程序来运行。与一般的 Java
应用程序不同,Applet不是通过main方法来运行的。在运行时 Applet通常会与用户
进行互动,显示动态的画面,并且还会遵循严格的安全检查,阻止潜在的不安全因素(例 如根据安全策略,限制 Applet对客户端文件系统的访问)。
1.2 4+1 ”视图
(1)逻辑视图
用户豎录?獰" 錢临理*
图1-6进程视图
物理视图
场景视图
图1-7物理视图 图1-8场景视图
2实验步骤
2.1组件的图形及核心代码
(1)用户登录组建如下所示:
用户登陆
1 说 ]
图2-1用户登录界面
(2)登陆成功界面
图2-2登陆成功
(3 )登录失败界面:
图2-3登录失败界面 (4)保存用户名与密码到数据库界面:
图2-4保存账号数据
3实验结果分析
对于B/S,只需在客户端安装通用的浏览器, 所有的维护和升级工作都是在服
务器上执行的,不需对客户端进行任何改变,故而大大降低了开发和维护成本。
B/S的客户端把事务逻辑部分分给了服务器 ,不再负责处理复杂计算和数据访
问等关键事务,只负责显示部分,任务大大减轻。
B/S所采用的标准是开放的、非专用的,保证了其应用的通用性和跨平台性。
B/S各层之间相互独立,任何一层的改变不影响其它层的功能,系统改进非常 容易,灵活性好。
附件
实验三源码:
import java.awt.*;
import java.applet.Applet;
import java.awt.eve nt.*;
import java .Ian g.Stri ng;
import .mima.jiami;
public class abc exte nds Applet public Label n ameLabel,passwardLabel,titleLabel;
public TextField n ame,passward;
public void in it()
{
setLayout (n ull);
titleLabel = new Label("用户登陆");
titleLabel.setFo nt(n ew Fon t("Times New Roma n",Fo nt.BOLD,30));
titleLabel.setBackgro un d(Color.ora nge);
nameLabel = new Label("用户名:");
n ameLabel.setFo nt( new Fon t("Times New Roma n",Fo nt.BOLD,30));
n ameLabel.setBackgro un d(Color.gree n);
n ameLabel.setForegro un d(Color.red);
passwardLabel = new Label(" 密码:");
passwardLabel.setFo nt( new Fo nt("Times New Roma n",Fo nt.BOLD,3O));
passwardLabel.setBackgro un d(Color.gree n);
passwardLabel.setForegro un d(Color.red);
n ame = new TextField("");
n ame.setFo nt( new Fon t("Times New Roma n" ,Fo nt.BOLD,3O));
passward = new TextField("");
passward.setFo nt(new Fon t("Times New Roma n",Fo nt.BOLD,3O));
passward.setEchoChar('*');
titleLabel.setLocatio n(200,0);titleLabel.setSize(140,70);
n ameLabel.setLocatio n(100,100); nameLabel.setSize(120,50);
n ame.setLocati on (250,100); name.setSize(200,40);
passwardLabel.setLocati on (100,200);passwardLabel.setSize(120,50);
passward.setLocatio n(250,200);passward.setSize(200,40);
add( nameLabel);add( name);
add(titleLabel);
add(passwardLabel);add(passward);
}
public String getPassword()
{
try{
String aPass= passward.getText();
jiami ajiami = new jiami();
Stri ng mi=ajiami.jiaMi(aPass);
return mi;
}
catch (Excepti on e)
{
return("error");
}
public String getName()
{
Stri ng an ame=n ame.getText();
retur n an ame;
}
}
<%page con te ntType="text/html;charset=gb2312"%>
<HTML>
<HEAD>
<TITLE> 小测试 </TITLE>
</HEAD>
<BODY>
<cen ter>
vform action="login_conf.jsp" method=post name="myForm" >
<APPLET CODE="abc.class" id=abc archive=".mima.jar" WIDTH="700"HEIGHT="300">
</APPLET>
<p> <in put type=hidde n n ame="n ame"></p>
<p> <in put type=hidde n n ame="password"x/p>
<script Ian guage=JScript>
fun cti on processApplet()
{ pare nt.myF orm.n ame.value = abc.getName();
pare nt.myForm.password.value = abc.getPassword();
/* alert("Se nt to form: Image Name: " +
pare nt.myF orm.n ame.value +
"Image Number: " +
pare nt.myForm.password.value);
*/
}
</script>
<input type=submit value=" 确认"style="width:100px;height:30px"
Ian guage="JScript" on Click="processApplet();">
</form>
</ce nter>
</BODY>
</HTML>
<%page con te ntType="text/html;charset=gb2312"%>
<html>
<head>
<title> 登陆 </title>
</head>
<body>
<cen ter>
<h1>登陆例一一用户名及密码固定 </h1>
<hr>
<br>
<br>
<h2>登陆成功</h2>
<h3> 欢迎 <font color="red" size="15"> <%=request.getParameter(” name")%〉
</font> 光临!!! </h3>
</cen ter>
</body>
</html>
<%page con te ntType="text/html;charset=gb2312"%> <html>
<head>
<title> 登陆 </title>
</head>
<body>
<cen ter>
<h1>登陆例一一用户名及密码固定 </h1>
<hr>
<br>
<br>
<h2>登陆失败</h2>
<h3>错误的用户名及密码! !!
</h3>
<a href="login.jsp"> 重新登陆 </a>
</cen ter>
</body> </html>
<% page conten tType="text/html;charset=gb2312"%>
<jsp:useBea n<jsp:useBea n<html>
<jsp:useBea n
<jsp:useBea n
<html>
id="Sec" scope="page" id="Co" scope="page"
<head>
<title> 登陆 </title>
</head>
<body>
<cen ter>
<h1>登陆例——用户名及密码保存在数据库 </h1>
<hr>
<br>
<br>
<%
String sqlQuery;
WHEREand
WHERE
and
n ame="'+request.getParameter(” name")+"' password="'+Sec.jieMi(request.getParameter("password"))+""';
Boolea n flag = Co.executeQuery(sqlQuery);
if(flag)
{
%>
<jsp:forward page="logi n_success.jsp"/>
<%
}
else
{
%>
<jsp:forward page="logi n_failure.jsp"/>
<%
}
%>
</cen ter>
</body>
</html>
相关热词搜索: 实验报告 密码学 实验 报告 最新密码学实验报告x