密码学置换群相关的运算及实现Word下载.docx

上传人:b****5 文档编号:20979014 上传时间:2023-01-26 格式:DOCX 页数:7 大小:48.25KB
下载 相关 举报
密码学置换群相关的运算及实现Word下载.docx_第1页
第1页 / 共7页
密码学置换群相关的运算及实现Word下载.docx_第2页
第2页 / 共7页
密码学置换群相关的运算及实现Word下载.docx_第3页
第3页 / 共7页
密码学置换群相关的运算及实现Word下载.docx_第4页
第4页 / 共7页
密码学置换群相关的运算及实现Word下载.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

密码学置换群相关的运算及实现Word下载.docx

《密码学置换群相关的运算及实现Word下载.docx》由会员分享,可在线阅读,更多相关《密码学置换群相关的运算及实现Word下载.docx(7页珍藏版)》请在冰豆网上搜索。

密码学置换群相关的运算及实现Word下载.docx

理解密码学相关基本概念

理解并能够编写基本的古典密码体制

熟练应用C++编程实现密码体制

二、实验内容

1、求S3的所有元素并输出所有的置换。

2、水域S3的任意两个置换元素,求他们的复合运算的结果。

3、给定S3的某个置换,求它的逆置换。

三、实验原理

1.置换群:

n元对称群的任意一个子群,都叫做一个n元置换群

2.矩阵的复合运算

3.矩阵的求逆运算

四、实验步骤(包括流程图、功能模块)

1.申请18个空间,将3个元素依次循环填入填充。

2.通过置换,求得所有置换群

3.矩阵的复合运算

4.矩阵的求逆运算

【算法流程图】

五、软件使用说明(开发环境、参数使用详细说明、实验结果+相应截图等)

【功能模块】

求取置换群

for(inti=0;

i<

3;

i++)

{

swap(Abelian[i*6],Abelian[i*6+i]);

swap(Abelian[i*6+3],Abelian[i*6+3+i]);

swap(Abelian[i*6+4],Abelian[i*6+4+1]);

}

矩阵的复合

for(inti=0;

i++)

for(intj=0;

j<

j++)

if(Abelian[3*(m-1)+i]==Abelian_Group_src[j])

Compound_Operate[i]=Abelian[3*(n-1)+j];

}

逆矩阵

{

for(intj=0;

if(Abelian[3*(n-1)+i]==Abelian_Group_src[j])

inverse_operation[j]=Abelian_Group_src[i];

【开发环境】

VisualStudio2013(Windows10)

【参数使用】

输入的三个元素:

4、5、6

选择做复合运算的两个置换:

4、5

求逆的矩阵编号:

4

【实验结果】

六、参考资料(书籍或网络文章)

《密码编码学与网络安全——原理与实践(第五版)》

七、实验心得和总结

八、源代码

#include<

iostream>

string.h>

usingnamespacestd;

intmain()

//1

int*Abelian_Group_src=newint[3];

cout<

<

"

请依次输入元素值:

"

;

cin>

>

Abelian_Group_src[i];

intAbelian[18];

18;

i=i+3)//因为每个置换群的第一行都相同,所以只需要对剩下的一行操作即可。

3的阶层是6,一共有六个置换群,去掉第一行,一共有6x3个数,每一组默认值按照输入的顺序赋值,并放在同一个数组中

Abelian[i]=Abelian_Group_src[0];

Abelian[i+1]=Abelian_Group_src[1];

Abelian[i+2]=Abelian_Group_src[2];

i++)//置换操作,18个数分为3组,每一组中的两个小组的第一个数分别于组数对应的数字交换,然后交换每一组最后两个数字

S3的所有置换:

<

endl;

i=i+3)

cout<

置换"

i/3+1<

:

Abelian_Group_src[0]<

Abelian_Group_src[1]<

Abelian_Group_src[2]<

Abelian[i]<

Abelian[i+1]<

Abelian[i+2]<

//2

intm,n;

请输入需要做复合运算的两个元素,即在上面的置换中任选2个(输入数字1~6):

cin>

n>

m;

while(n<

1||n>

6||m<

1||m>

6)

输入错误,请重新输入!

请输入需要作复合运算的两个元素,即在上面的置换中任选2个(输入数字1~6):

intCompound_Operate[3];

//if(Abelian[3*(m-1)+i]==Abelian_Group_src[0])

//Compound_Operate[i]=Abelian[3*(n-1)];

//if(Abelian[3*(m-1)+i]==Abelian_Group_src[1])

//Compound_Operate[i]=Abelian[3*(n-1)+1];

//if(Abelian[3*(m-1)+i]==Abelian_Group_src[2])

//Compound_Operate[i]=Abelian[3*(n-1)+2];

="

Abelian[3*(n-1)]<

Abelian[3*(n-1)+1]<

Abelian[3*(n-1)+2]<

Abelian[3*(m-1)]<

Abelian[3*(m-1)+1]<

Abelian[3*(m-1)+2]<

Compound_Operate[0]<

Compound_Operate[1]<

Compound_Operate[2]<

//3

intinverse_operation[3];

请输入需要求逆的矩阵编号,即在上面的置换编号(输入数字1~6):

n;

if(Abelian[3*(n-1)+i]==Abelian_Group_src[j])

inverse_operation[j]=Abelian_Group_src[i];

的逆置换为:

inverse_operation[0]<

inverse_operation[1]<

inverse_operation[2]<

system("

pause"

);

return0;

WelcomeTo

Download!

!

欢迎您的下载,资料仅供参考!

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1