第十三讲 m-序列的安全性(包含C语言版本Berlekamp-Massey算法)
寻找m序列的递推关系式。
已知一段序列,如果知道其反馈多项式,就可以将其后的序列依次求出
已知序列能否获得相应的反馈多项式(或线性递推式)呢?
- 解方程方法——已知序列{ai }是由n 级线性移存器产生的,并且知道{ai }的连续2n位,可用解线性方程组的方法得到反馈多项式
- 线性反馈移位寄存器综合解——Berlekamp-Massey算法
1 解方程方法
例1 设序列a = (01111000…)是由4级线性移存器所产生序 列的连续8个信号,求该移存器的线性递推式。
例 设敌手得到密文串: 101101011110010
和相应的明文串: 011001111111001
因此,可得相应的密钥流: 110100100001011
进一步假定敌手还知道密钥流是使用5级线性反馈移位寄存器产生的,那么敌 手可分别用密钥流中的前10个比特建立如下方程
2 线性反馈移位寄存器综合
根据密码学的需要,对线性反馈移位寄存器(LFSR) 主要考虑下面两个问题:
(1)如何利用级数尽可能短的LFSR产生周期大、随机性能良好的序列。
这是从密钥生成角度考虑,用最小的代价产生尽可能好的、参与 密码变换的序列。
(2)当已知一个长为N序列a时,如何构造一个级数尽可能小的LFSR来产生它。
这是从密码分析角度来考虑,要想用线性方法重构密钥序列所必须付出的最小代价。
线性综合解
线性移位寄存器的综合问题
Berlekamp-Massey算法(B-M算法)
#include<stdio.h>
#include<string.h>
#define N 200
void printp(unsigned char *f,int n,int w)
{int i,j=0,hflag=1;for(i=0;i<=n;i++)if(f[i]){if(!hflag){printf("+");j++;}elsehflag=0;if(i>1){printf("x^%-3d",i);j+=5;}else{(i==1)?printf("x"):printf("1");j++;}}for(i=0;i<w-j;i++)printf("");
}int main()
{int L=0,LL,l,i,n,m;char S[N];unsigned char f[N+1],ff[N+1],g[N+1],d;f[0]=1;for(i=1;i<=N;i++)f[i]=0;
start:printf("\n请输入长度不超过%d的比特串:\n",N);scanf("%s",S);l=strlen(S);for(i=0;i<1;i++)if(S[i]!='0'&&S[i]!='1'){printf("\n 输入数据不合法,须重来! \n");goto start;}printf(" n dn fn ln m fm\n");for(n=0;n<l;n++){d=(S[n]=='0')?0:1;for(i=1;i<=L;i++)if(f[i]==1) d^=(S[n-i]=='0')?0:1;printf("%3d %1d ",n,d);printp(f,L,30);printf("%3d",L);if(d==1&&L!=0){printf(" %3d ",m);printp(ff,LL,30);}printf("\n");if(d!=0){if(L==0){m=n;for(i=0;i<=L;i++)ff[i]=f[i];LL=L;f[n+1]=1;L=n+1;}else{for(i=0;i<=L;i++) g[i]=f[i];for(i=0;i<=LL;i++) f[n-m+i]^=ff[i];if(n+1-L>L){m=n;for(i=0;i<=L;i++)ff[i]=g[i];LL=L;L=n+1-L;}}}}printf("%3d ",n,d);printp(f,L,30);printf("%3d\n",L);}
![](/assets/blank.gif)
第十三讲 m-序列的安全性(包含C语言版本Berlekamp-Massey算法)相关推荐
- [XJTU计算机网络安全与管理]——第十三讲 攻击与病毒
文章目录 [XJTU计算机网络安全与管理]--第十三讲 攻击与病毒 一.缓冲溢出 缓冲溢出防御 编译时加固 运行时加固 二.协议漏洞攻击 三.拒绝服务攻击 四.用户认证 生物学特征 Kerberos ...
- 开环直流电机的机械特性_第二十三讲 20直流PWM变换器-电动机系统及开环调速系统机械特性.ppt...
第二十三讲 20直流PWM变换器-电动机系统及开环调速系统机械特性 谢谢! 本讲结束 * * 电力传动控制系统 上海开放大学 * 第二十三讲 直流PWM变换器-电动机系统及开环调速系统机械特性 * 不 ...
- 趣谈网络协议笔记-二(第十三讲)
趣谈网络协议笔记-二(第十三讲) 套接字Socket:Talk is cheap, show me the code 前言 这只是笔记,是为了整理刘超大神的极客时间专栏的只是而存在的! 经常会在网络上 ...
- 花书+吴恩达深度学习(十六)序列模型之双向循环网络 BRNN 和深度循环网络 Deep RNN
目录 0. 前言 1. 双向循环网络 BRNN(Bidirectional RNN) 2. 深度循环网络 Deep RNN 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花 ...
- 花书+吴恩达深度学习(十五)序列模型之循环神经网络 RNN
目录 0. 前言 1. RNN 计算图 2. RNN 前向传播 3. RNN 反向传播 4. 导师驱动过程(teacher forcing) 5. 不同序列长度的 RNN 如果这篇文章对你有一点小小的 ...
- 2022张宇考研基础30讲 第十三讲 常微分方程
文章目录 第十三讲 常微分方程 一阶微分方程 变量可分离型 可化为变量可分离型 一阶线性方程通式法 伯努利方程 二阶可降阶微分方程 高阶线性微分方程 课本例题精选 第十三讲 常微分方程 一阶微分方程 ...
- 第十三讲 面向对象(下)——Seasons in the sun
第十三讲目录 1. property装饰器 2. 继承简介 3. 方法重写 4. super() 5. 多重继承 6. 多态 7. 属性和方法 1. property装饰器 我们可以使用@proper ...
- 视觉 SLAM 十四讲 —— 第十三讲 建图
视觉 SLAM 十四讲 -- 第十三讲 建图 在前端和后端中,我们重点关注同时估计相机运动轨迹与特征点空间位置的问题.然而,在实际使用 SLAM 时,除了对相机本体进行定位之外,还存在许多其他的需求. ...
- Slicer学习笔记(五十六)slicer分割transformNode包含的信息与使用
Slicer学习笔记(五十六)slicer分割transformNode包含的信息与使用 1.打印transformNode信息 2.测试 2.1.变换前 2.2.变换后 3.使用坐标变换 1.打印t ...
最新文章
- android 视频图片,Android - 视频提取图片方法
- Vivado 随笔(3) 其他综合属性 dont_touch、fsm_encoding?
- 图例符号居中显示_R可视化08|ggplot2图层-标度图层(scale layer)-图例篇
- 腾讯、百度、阿里、微软面试题精选(不断更新)
- 2.1.3 操作系统之原语实现对进程的控制
- 负载均衡—算法/策略
- 跟sheldon学习时间管理
- 【计算机组成原理】字符、字符串以及汉字的表示方法
- AtomicReference 原子引用
- C++std命名空间和头文件详解
- 美团点评Kubernetes集群管理实践
- 学校管理系统有望突破信息瓶颈
- python 保留顺序去重_Python入门很简单,只要掌握3456点
- R语言数据可视化---交互式图表recharts包
- RAC安装时,报The specified nodes are not clusterable 的解决方法
- tomcat7下载安装
- Matlab程序——修正鲍威尔Powell法
- 豪迪QQ群发通杀破解补丁使用教程
- 三种LCA算法(一):Doubly算法(倍增算法)
- 家用投影机预埋布线图_家庭影院装修如何布线(装修前必看·附图)
热门文章
- python自动点赞功能
- 走在同样的路上,遇见自己的风景
- 编好的python程序在自己的电脑上供其他程序调用方法
- python中str的index什么意思_python index函数是什么意思
- 使用YOLOv3实现目标检测
- IE8-9禁用加载项提示
- 解释用于语义面部编辑(Semantic Face Editing)的GAN的隐空间(Latent Space)
- 【springboot+云计算】B/S医院信息管理系统源码(云HIS)
- Ubuntu18.04下安装openfoam的一种方法
- ExecuteNonQuery(),ExecuteScalar(),ExecuteReader的用法-转