栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

现代密码学第一次实验:线性移位寄存器

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

现代密码学第一次实验:线性移位寄存器

现代密码学第一次实验:线性移位寄存器
  • 前言
  • 一、实验目的
  • 二、实验环境
  • 三、实验内容及步骤
  • 四、实验要求
  • 五、实验程序清单
  • 六、实验结果
  • 七、实验总结

前言

为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正!

一、实验目的

1.了解线性移位寄存器产生伪随机序列的原理。
2.伪随机寄存器的软件实现。
3.同一个反馈函数不同初始值下的输出序列。
4.同一个初始值在不同反馈函数下的输出序列。

二、实验环境

Microsoft Visual Studio 2019

三、实验内容及步骤

1.编程实现8位线性移位寄存器。
2.观察输出序列前255位的随机性。
3.改变反馈函数,再观察输出序列前255位的随机性。
4.改变初始值,再观察输出序列前255位的随机性。
5.找到一个m序列。**

四、实验要求

1.程序设计的思想,及程序原代码。
2.报告观察结果。
3.对观察结果的分析。
4.分析8位寄存器产生的m序列。***

五、实验程序清单

实验代码修改为如下所示:

void CMFCApplication2View::OnBnClickedButton1()
{
	CString str;
	GetDlgItemText(IDC_EDIT4, str);
	unsigned int t1, f;
	unsigned int lfsr, fs;
	int fsc = _ttoi(str);
	CString out;
	int i, j, c1 = 0, c2 = 0;
	lfsr = 0x95;
	for (i = 1; i <= 255; i++)
	{
		fs = lfsr&fsc;
		t1 = lfsr & 0x80;
		if (t1 == 0)
		{
			c1++;
			out += '0';
		}
		else
		{
			out += '1';
			c2++;
		}
		f = 0;
		for (j = 0; j<8; j++)
		{
			if (fs & 0x1 != 0)
				f = f ^ 1;
			else
				f = f ^ 0;
			fs = fs / 2;
		}
		lfsr = lfsr / 2;
		if (f == 1)
			lfsr = lfsr | 0x80;
		else
			lfsr = lfsr & 0x7f;
	}
	CString zero, one;
	zero.Format(_T("%d"), c1);
	SetDlgItemText(IDC_EDIT1, zero);
	one.Format(_T("%d"), c2);
	SetDlgItemText(IDC_EDIT2, one);
	SetDlgItemText(IDC_EDIT3, out);
}
六、实验结果

实验运行如下:





七、实验总结

通过本次实验,我们可分析得到如下信息与结论:由于线性反馈移位寄存器的运算是确定的,因此,由寄存器生成的数据流可完全决定寄存器现在的状态。由于寄存器的状态终究是有限的,它终将生成一个固定循环。通过多项式,线性反馈移位寄存器可以生成具有伪随机特性的长循环周期序列。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835935.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号