实验二 密码置换.docx

上传人:b****7 文档编号:15428206 上传时间:2023-07-04 格式:DOCX 页数:13 大小:144.58KB
下载 相关 举报
实验二 密码置换.docx_第1页
第1页 / 共13页
实验二 密码置换.docx_第2页
第2页 / 共13页
实验二 密码置换.docx_第3页
第3页 / 共13页
实验二 密码置换.docx_第4页
第4页 / 共13页
实验二 密码置换.docx_第5页
第5页 / 共13页
实验二 密码置换.docx_第6页
第6页 / 共13页
实验二 密码置换.docx_第7页
第7页 / 共13页
实验二 密码置换.docx_第8页
第8页 / 共13页
实验二 密码置换.docx_第9页
第9页 / 共13页
实验二 密码置换.docx_第10页
第10页 / 共13页
实验二 密码置换.docx_第11页
第11页 / 共13页
实验二 密码置换.docx_第12页
第12页 / 共13页
实验二 密码置换.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验二 密码置换.docx

《实验二 密码置换.docx》由会员分享,可在线阅读,更多相关《实验二 密码置换.docx(13页珍藏版)》请在冰点文库上搜索。

实验二 密码置换.docx

实验二密码置换

实验二密码置换

一.单表置换密码

(1)单击“密码工具”按钮,进入“加密解密”|“单表置换”|“加密/解密”视图,与同组主机协商好一个密钥词组k=key。

(2)根据“单表置换”实验原理计算出置换表。

(3)计算完成置换表以后,在明文输入区输入明文,单击“加密”按钮用置换表的对应关系对明文进行加密,加密完成后,单击“导出”按钮,将密文导出到SingleTable共享目录中,并通告同组主机获取密文。

请将明文记录在这里:

hello。

(4)单击“导入”按钮将同组主机单表置换密文导入,根据同组主机置换表完成本机置换表,单击“解密”按钮对密文进行解密。

SJKVT

(5)本机将解密后的明文与同组主机记录的明文对照,如果双方的明文一致,则说明实验成功,否则说明本机或同组主机的置换表计算错误。

1)图1是由统计学得出的英文字母相对频率表。

由图1可以看出,英文字母E出现的频率最高,而J和Z出现的频率最低,这样,就可以通过英文字母出现的频率大致上判定单表置换密码的置换表,从而得到明文。

(2)本机进入“密码工具”|“加密解密”|“单表置换”|“密码分析”页面,单击“导入”按钮,将密文“单表置换密码分析密文.txt”导入,单击“统计”按钮,统计密文中每个字母出现的频率,回答下列问题:

在密文中出现频率最高的字母是A。

与上表比较,它可能是由字母E置换的。

(3)置换表组框中点击“解密”按钮,这时将得到一个明文。

然而此时的明文并不是最终要得到的,可以通过明文的特征和各个字母的比例来调节置换表中的对应关系,从而得到正确的明文。

依此类推便可以得到明文,请根据你的置换表填写表1。

a

b

c

d

e

f

g

h

i

j

k

l

M

O

G

K

N

A

D

H

E

F

Z

V

R

W

n

o

p

q

r

s

t

u

v

w

x

y

z

L

M

I

Q

C

S

T

T

B

P

X

U

G

 

三.源码应用(选做)

设计单表置换加密工具,利用单表置换加密算法对文件进行加密。

单击工具栏“单表置换加密工具工程”按钮。

基于此工程进行程序设计。

 

实验五惟吉尼亚算法

(1)本机单击“密码工具”按钮,进入“加密解密”|“维吉尼亚密码”|“加密/解密”视图,与同组主机协商好密钥=key(此密钥分成标准和扩展型,在实验中自行选择)。

「注」标准型使用26*26矩阵与26取模,扩展型使用94*94矩阵与94取模。

(2)本机在明文输入区输入明文,单击“加密”按钮对明文进行加密,加密完成后,单击“导出”按钮,将密文导出到D:

\Work\Encryption\Vigenere共享目录中,并通告同组主机通过访问共享文件夹获取密文。

请将明文记录在这里:

helloworld。

(3)同组主机打开工具面板中的密码工具,单击“导入”按钮,即将D:

\Work\Encryption\Vigenere中的维吉尼亚密文导入,填入协商好的密钥,单击“解密”按钮对密文进行解密。

(4)本机将解密后的明文与同组主机记录的明文对照,如果双方的明文一致,则说明实验成功,否则说明本机或同组主机的维吉尼亚密码计算错误。

密文:

rijvsuyvjn

 

一.DES加密解密

(1)本机进入“密码工具”|“加密解密”|“DES加密算法”|“加密/解密”页签,在明文输入区输入明文:

straight。

(2)在密钥窗口输入8(64位)个字符的密钥k,密钥k=fforward。

单击“加密”按钮,将密文导出到DES文件夹(D:

\Work\Encryption\DES\)中,通告同组主机获取密文,并将密钥k告诉同组主机。

(3)单击“导入”按钮,从同组主机的的DES共享文件夹中将密文导入,然后在密钥窗口输入被同组主机通告的密钥k,点击“解密”按钮进行DES解密。

(4)将破解后的明文与同组主机记录的明文比较。

密文:

3329F781095AAFD7

二.DES算法

本机进入“密码工具”|“加密解密”|“DES加密算法”|“演示”页签,向64位明文中输入8个字符(8*8bit=64),向64位密钥中输入8个字符(8*8bit=64)。

点击“加密”按钮。

完成加密操作,分别点击“初始置换”、“密钥生成演示”、“十六轮加密变换”和“终结置换”按钮,查看初始置换、密钥生成演示、十六轮加密变换和终结置换的详细加密操作流程。

二.3DES加密解密

(1)本机进入“密码工具”|“加密解密”|“3DES加密算法”|“加密/解密”视图,确定好密钥K1和K2=__straight___fforward_________。

(2)在明文输入区输入明文(明文为英文),单击“加密”按钮对明文进行加密,加密完成后,单击“导出”按钮,将密文导出到D:

\Work\Encryption\3DES共享目录中,并通告同组主机获取密文,获取后存放在D:

\Work\Encryption\3DES目录下。

单击“重置”按钮,恢复原始状态。

helloworldthisisalittlegirl

(3)同组主机单击“导入”按钮,选择将要导入的密文,填入密钥,单击“解密”按钮对密文进行解密。

(4)将解密后的明文与解密前记录的明文对照,如果双方的明文一致,则说明实验成功,否则说明解密前或导入后的3DES加密算法计算错误。

1110011110000100110100011011101100000000110001101000101011001011110110011110001100010010101000100110010000011011000011000000010011001001100100111101100010100001101001001011111111000100110000001111111101101001111100101000110000111011111101000000000111110010

一.AES加密解密

(1)本机进入“密码工具”|“加密解密”|“AES加密算法”|“加密/解密”页签,在明文输入区输入明文:

straightforwardf。

(2)在密钥窗口输入16(128位)个字符的密钥k,要记住这个密钥以用于解密,密钥k=fdrawrofthgiarts。

单击“加密”按钮,将密文导出到AES文件夹(D:

\Work\Encryption\AES\)中,通告同组主机获取密文,并将密钥k告诉同组主机。

(3)单击“导入”按钮,从同组主机的AES共享文件夹中将密文导入,然后在密钥窗口输入被同组主机通告的密钥k,点击“解密”按钮进行AES解密。

(4)将破解后的明文与同组主机记录的明文比较。

AE83BCFD62FB801EE9585A23176C7B50

二.AES算法

进入“密码工具”|“加密解密”|“AES加密算法”|“演示”页签。

输入128位明文与密钥,执行加密操作,查看各演示模块。

根据实验原理中对AES加密算法的SubBytes变换和ShiftRows变换的介绍,对于以下给出的状态矩阵:

 

请计算它的SubBytes变换,以及经过SubBytes变换之后,再经过ShiftRows变换的结果。

 

SubBytes变换

C9

59

82

F0

C0

E1

E0

A4

76

C5

C5

F2

77

ED

59

16

ShiftRows变换

C9

59

82

F0

E1

E0

A4

C0

C5

F2

76

C5

16

77

ED

59

/******************************************************************************/

//工程:

DES

//功能:

DES加、解密文件

//作者:

jlcss|ExpNIS

/******************************************************************************/

#include

#include

#include

#include

#include"des.h"

#include

#defineDECRYPT_FILE"DES加密密文.txt"

#defineENCRYPT_FILE"DES解密明文.txt"

//!

约束文件最大2M

#defineMAX_FILE1024*1024*2

/******************************************************************************/

//名称:

usage

//功能:

帮助信息

//参数:

应用程序名称

//返回:

提示信息

/******************************************************************************/

voidUsage(constchar*appname)

{

printf("\n\tusage:

des-e明文文件64位密钥\n");

printf("\tusage:

des-d密文文件64位密钥\n");

}

/******************************************************************************/

//名称:

FileIn

//功能:

读取磁盘文件到内存

//参数:

strFile:

文件名称;inBuff:

指向文件内容缓冲区

//返回:

实际读取内容大小(字节)

/******************************************************************************/

intFileIn(constchar*strFile,unsignedchar*&inBuff)

{

intiFileLen=0;

//!

打开密文文件

CFilefile(strFile,CFile:

:

modeRead);

iFileLen=(int)file.GetLength();

if(iFileLen>MAX_FILE)

{

printf("文件长度不能大于%dM,!

\n",MAX_FILE/(1024*1024));

gotoout;

}

inBuff=newunsignedchar[iFileLen+1];

if(!

inBuff)

gotoout;

file.Read(inBuff,iFileLen);

file.Close();

inBuff[iFileLen]=0;

out:

returniFileLen;

}

/******************************************************************************/

//名称:

FileOut

//功能:

加/解密结果输出到当前目录磁盘文件中

//参数:

strOut指向输出字符缓冲区,输出大小len,strFile为输出文件

//返回:

/******************************************************************************/

voidFileOut(constvoid*strOut,intlen,constchar*strFile)

{

//!

输出到文件

CFileoutfile(strFile,CFile:

:

modeCreate|CFile:

:

modeWrite);

outfile.Write(strOut,len);

outfile.Close();

}

/******************************************************************************/

//名称:

CheckParse

//功能:

校验应用程序入口参数

//参数:

argc等于main主函数argc参数,argv指向main主函数argv参数

//返回:

若参数合法返回true,否则返回false

//备注:

简单的入口参数校验

/******************************************************************************/

boolCheckParse(intargc,char**argv)

{

if((argc!

=4)||

(argv[1][1]!

='e'&&argv[1][1]!

='d')||

(strlen(argv[3])>(64/8)))

{

Usage(argv[0]);

returnfalse;

}

returntrue;

}

voidConvertToStr(constbit*p,intlength,std:

:

string&str)

{

charstrTmp[1000]={0};

str.empty();

for(inti=0;i

{

intn=(p[i]*8)+(p[i+1]*4)+(p[i+2]*2)+(p[i+3]*1);

sprintf(strTmp,"%0X",n);

str+=strTmp;

}

}

//!

程序主函数(UseMFCinaSharedDLL)

intmain(intargc,char**argv)

{

clock_ta,b;

a=clock();

DES_Encrypt("1.txt","key.txt","2.txt");

b=clock();

printf("加密消耗%d毫秒\n",b-a);

system("pause");

a=clock();

DES_Decrypt("2.txt","key.txt","3.txt");

b=clock();

printf("解密消耗%d毫秒\n",b-a);

getchar();

return0;

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2