密码实验报告2

更新时间:2023-05-14 01:50:52 阅读: 评论:0

一、实验目的
该实验为验证性实验。
通过本实验,使学生对于两种基本的古典密码编码方法(“代替”与“移位”) 产生深刻的感性认识,体验清楚二者之间的本质差异,为理解和掌握现代密码的相应知识打下良好基础。
莫干山好玩吗二、实验内容
1.  设计一个周期 3 的多表代替密码并予以实现,要求:第 1 个表由密钥字法
    产生(密钥字自拟),第 2 个表由洗牌法产生(注意,字母 a~z 与数字 0~25
    一一对应,洗牌法即相当于实验一的方法  1(n=25)),第三个表由公式法
    产生(数学公式自拟,注意它须是 Z26 上的一个一一变换)。
2.  设计一个周期 5 的 16-置换移位密码并予以实现,要求:5 个 16-置换至少
    有一个是由实验一(n=15)提供的两个方法以外、自行设计的其它方法产
    生。
实验要求
1.  上述两个古典密码的编程实现,须能对下面一段明文进行正确加密(对代
    替密码,空格和标点符号保持不动;对移位密码,空格和标点符号也移位):
Q is a symmetric block cipher. It is defined for a block size of 128 bits. It
allows arbitrary length passwords. The design is fairly conrvative. It
consists of a simple substitution-permutation network. In this paper we prent
the cipher, its design criteria and our analysis. The design is bad on both
Rjindael and Serpent. It us an 8-bit s-box from Rjindael with the linear mixing
layers replaced with two Serpent style bit-slice s-boxes and a linear
permutation. The combination of methods eliminates the high level structure
inherent in Rjindael while having better speed and avalanche characteristics
than Serpent.    Speed is improved over Serpent. This version 2.00 contains
better analysis, editorial changes,  and  an  improved  key  scheduling
algorithm.  The  number  of recommended rounds is also incread.
2.  抓图显示密文(附页),不能出现明显错误。
四、实验步骤
1.通过预习和老师在实验课上的讲解,理解代替密码和移位密码的本质差别,对程序的作用有初步了解
2.分析实验指导书上所列代码,搞清楚各个子函数的功能、理清程序的大体思路;
3.将主函数与各个子函数进行合并整合,处理编译上出现的语法问题,使编译可以顺利通过;
4.完善程序,输入数据对程序的逻辑功能进行验证,测试随机数结构调用是否完整,测试结果是否符合对应加密要求,验证打开关闭文件是否顺利
五、实验体会
六、思考题
“代替表”与“置换”的不动点、逆等是否一致?
答: 不一致。代替约定明文集合到另一集合的关系,不一定是原来的集合,而移位
明文集合中进行随机排列然后得到的密文。两者的不动点、逆等只有在统一集合变换时
可能一致。
七、实验代码及运行结果
实验代码:
1.代替密码ie怎么升级
#include<stdio.h>
#include<time.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
/*声明子函数*/
unsigned char *full_array2(char n);  /*fully_array函数产生随机数*/
int letter_to_digit(char c);
char digit_to_letter(int n);
鲜血淋漓第二季unsigned char *KeyGen_s( );
void Encrypt_s(unsigned char *key);
/*主函数*/
int main()
{
    printf("---------代替密码加密算法---------\n");
    Encrypt_s(KeyGen_s());
    system("pau");
    return 0;
}
unsigned char *full_array2(char n)  /*fully_array函数产生随机数*/
{
int m,i,j,k,l =0,flag;
    static unsigned char P[256];
start:
    printf("\n请输入不小于%d的所有随机数个数:\n",n+1);
    scanf("%d",&m);
    if(m<=n)
    {
        printf("\n输入数%d比%d小,须重新输入!\n",m,n+1);
        goto start;
    }
    srand((unsigned)time(NULL));/*初始化随机种子*/
    for(i=0;i<m;i++)
好看的动漫女生
    {
        P[l++]=(unsigned char)(rand()%(n+1));
        for(j=0;j<l-1;j++)
        {
            if(P[j]==P[l-1])
            {
                l--;
                break;
            }
        }
    }
    k=l;
    for(i=0;i<=n;i++)
    {
        flag=0;
        for(j=0;j<k;j++)
            if(P[j]==i)
            {
                flag=l;
                break;
            }
        if(!flag)
        {
正手拉球            P[l]=i;
            l++;
        }
    }
    return(P);
}
int letter_to_digit(char c)
{
int i;
char alphabet[27]={"abcdefghijklmnopqrstuvwxyz"}; for(i=0;i<26;i++)
if(tolower(c)==alphabet[i]) return(i);
return(-1);
}
char digit_to_letter(int n)
{ 胸口右边疼是怎么回事
    char alphabet[27]={"abcdefghijklmnopqrstuvwxyz"};
if(n<0||n>25) return(0);
return(alphabet[n]);
}
unsigned char *KeyGen_s( )
{
筑牢理想信念之基
char KeyWords[106];
char ChoiceWords[26];
unsigned char *p;
static unsigned char KeyTab[26*3];
int  i,j,k,l;
printf("\n 请输入密钥字:\n");
gets(KeyWords);
strcat(KeyWords,"abcdefghijklmnopqrstuvwxyz");
k=0;
l=strlen(KeyWords);
ChoiceWords[k]=tolower(KeyWords[0]);
for(i=1;i<l;i++)
{
if(letter_to_digit(KeyWords[i])==-1) continue; ChoiceWords[++k]=tolower(KeyWords[i]); for(j=0;j<k;j++)
if(ChoiceWords[j]==ChoiceWords[k])
{
黄精功效作用k--;
break;
}
}
for(i=0;i<26;i++)

本文发布于:2023-05-14 01:50:52,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/621132.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:密码   实验   产生   移位
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图