网 络 安 全 技 术
实 验 报 告
网络安全技术课程组
专 业 网络工程
班 级 1202
学 号 ************
姓 名 冷 珊
指导教师 邓作杰
2015年 12 月 9日
湖南工程学院计算机与通信学院
一、实验目的
卫生香编制基本的文本加、解密程序
二、实验内容
三、实验要求
使用任意高级语言做出给文本文件加、解密的软件.
四、实验步骤:
参考教科书有关内容,掌握凯撒加密方法,自行设计密钥.编制程序。
密码术可以大致别分为两种:即换位和替代,当然也有两者结合的更复杂的方法。在换位中字母不变,位置改变;替代中字母改变,位置不变。 将替代密码用于军事用途的第一个文件记载是恺撒著的《高卢记》。恺撒描述了他如何将密信送到正处在被围困、濒临投降的西塞罗。其中罗马字母被替换成希腊字母使得敌人根本无法看懂信息。苏托尼厄斯在公元二世纪写的《恺撒传》中对恺撒用过的其中一种替代密码作了详细的描写。恺撒只是简单地把信息中的每一个字母用字母表中的该字母后的第三个字母代替。这种密码替换通常叫做凯撒移位密码,或简单的说,凯撒密码。
凯撒密码是将每一个字母向前推移K位。如K=3,则它的每一个明文字符都由其右边第三个(模26)字符代换如将字母A换作字母D,将字母B换作字母E。
如有这样一条指令: RETURN TO ROME
用恺撒密码加密后就成为: UHWXUA WR URPH
如果这份指令被敌方截获,也将不会泄密,因为字面上看不出任何意义。
这种加密方法还可以依据移位的不同产生新的变化,如将每个字母左19硅胶模具制作方法位,就产生这样一个明密对照表:
明:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密:T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
暴力破解:
使用从1-25的密钥依次解密密文,看看得出来的结果是怎样的。
参考资料:
尽管苏托尼厄斯仅提到三个位置的恺撒移位,但显然从1到25个位置的移位我们都可以使用, 因此,为了使密码有更高的安全性,单字母替换密码就出现了。
如:
明码表 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 密码表 Q W E R T Y U I O P A S D F G H J K L Z X C V B N M 明文 F O R E S T 密文 Y G K T L Z 凝胶珠只需重排密码表二十六个字母的顺序,允许密码表是明码表的任意一种重排,密钥就会增加到四千亿亿亿多种,我们就有超过4×1027种密码表。破解就变得很困难。
如何破解包括恺撒密码在内的单字母替换密码?
任务一; 凯撒密码的加解密
源代码:
#include<stdafx.h>
#include <stdio.h>
#include <string.h>
int main()
胀锚螺栓
{
char s[100],c;
int i,p,d,e;
printf("请选择 : A.加密 B.解密 Q.退出\n");
scanf("%c",&c);
if(c=='a'||c=='A')
{
剥线
printf("输入明文:");
scanf("%s",&s);
p=strlen(s);
printf("请设置偏移量:");
scanf("%d",&d);
for(i=0;i<p;i++)
{
if(s[i]>='a' && s[i]<='z')
s[i]=(s[i]-'a'+d)%26+'a';
else if(s[i]>='A' && s[i]<='Z')
s[i]=(s[i]-'A'+d)%26+'A';
else s[i]=s[i]+d;
}
printf("%s",s);
printf("\n\n\n");
}
if(c=='b'||c=='B')
{
printf("请输入密文:");
scanf("%s",&s);
p=strlen(s);
printf("请输入加密的偏移变量:");
scanf("%d",&d);
for(i=0;i<p;i++)
{
if(s[i]>='a' && s[i]<='z')
{
e=s[i]-'a'-d;
if(e<=0)
s[i]=(e+26)%26+'a';
else s[i]=e%26+'a';
}
else if(s[i]>='A' && s[i]<='Z')
{
e=s[i]-'A'-d;
if(e<0)
s[i]=(e+26)%26+'A';
啪啪圈 else s[i]=e%26+'A';
}
else s[i]=s[i]-d;
}
printf("%s",s);
printf("\n\n");
}
if(c=='q'||c=='Q')
return 0;
return 0;
}
运行界面:
任务二:维吉尼亚密码的加解密
源代码:
#include "stdafx.h"
#include<iostream>
using namespace std;