寻找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);}

运行结果

第十三讲 m-序列的安全性(包含C语言版本Berlekamp-Massey算法)相关推荐

  1. [XJTU计算机网络安全与管理]——第十三讲 攻击与病毒

    文章目录 [XJTU计算机网络安全与管理]--第十三讲 攻击与病毒 一.缓冲溢出 缓冲溢出防御 编译时加固 运行时加固 二.协议漏洞攻击 三.拒绝服务攻击 四.用户认证 生物学特征 Kerberos ...

  2. 开环直流电机的机械特性_第二十三讲 20直流PWM变换器-电动机系统及开环调速系统机械特性.ppt...

    第二十三讲 20直流PWM变换器-电动机系统及开环调速系统机械特性 谢谢! 本讲结束 * * 电力传动控制系统 上海开放大学 * 第二十三讲 直流PWM变换器-电动机系统及开环调速系统机械特性 * 不 ...

  3. 趣谈网络协议笔记-二(第十三讲)

    趣谈网络协议笔记-二(第十三讲) 套接字Socket:Talk is cheap, show me the code 前言 这只是笔记,是为了整理刘超大神的极客时间专栏的只是而存在的! 经常会在网络上 ...

  4. 花书+吴恩达深度学习(十六)序列模型之双向循环网络 BRNN 和深度循环网络 Deep RNN

    目录 0. 前言 1. 双向循环网络 BRNN(Bidirectional RNN) 2. 深度循环网络 Deep RNN 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花 ...

  5. 花书+吴恩达深度学习(十五)序列模型之循环神经网络 RNN

    目录 0. 前言 1. RNN 计算图 2. RNN 前向传播 3. RNN 反向传播 4. 导师驱动过程(teacher forcing) 5. 不同序列长度的 RNN 如果这篇文章对你有一点小小的 ...

  6. 2022张宇考研基础30讲 第十三讲 常微分方程

    文章目录 第十三讲 常微分方程 一阶微分方程 变量可分离型 可化为变量可分离型 一阶线性方程通式法 伯努利方程 二阶可降阶微分方程 高阶线性微分方程 课本例题精选 第十三讲 常微分方程 一阶微分方程 ...

  7. 第十三讲 面向对象(下)——Seasons in the sun

    第十三讲目录 1. property装饰器 2. 继承简介 3. 方法重写 4. super() 5. 多重继承 6. 多态 7. 属性和方法 1. property装饰器 我们可以使用@proper ...

  8. 视觉 SLAM 十四讲 —— 第十三讲 建图

    视觉 SLAM 十四讲 -- 第十三讲 建图 在前端和后端中,我们重点关注同时估计相机运动轨迹与特征点空间位置的问题.然而,在实际使用 SLAM 时,除了对相机本体进行定位之外,还存在许多其他的需求. ...

  9. Slicer学习笔记(五十六)slicer分割transformNode包含的信息与使用

    Slicer学习笔记(五十六)slicer分割transformNode包含的信息与使用 1.打印transformNode信息 2.测试 2.1.变换前 2.2.变换后 3.使用坐标变换 1.打印t ...

最新文章

  1. android 视频图片,Android - 视频提取图片方法
  2. Vivado 随笔(3) 其他综合属性 dont_touch、fsm_encoding?
  3. 图例符号居中显示_R可视化08|ggplot2图层-标度图层(scale layer)-图例篇
  4. 腾讯、百度、阿里、微软面试题精选(不断更新)
  5. 2.1.3 操作系统之原语实现对进程的控制
  6. 负载均衡—算法/策略
  7. 跟sheldon学习时间管理
  8. 【计算机组成原理】字符、字符串以及汉字的表示方法
  9. AtomicReference 原子引用
  10. C++std命名空间和头文件详解
  11. 美团点评Kubernetes集群管理实践
  12. 学校管理系统有望突破信息瓶颈
  13. python 保留顺序去重_Python入门很简单,只要掌握3456点
  14. R语言数据可视化---交互式图表recharts包
  15. RAC安装时,报The specified nodes are not clusterable 的解决方法
  16. tomcat7下载安装
  17. Matlab程序——修正鲍威尔Powell法
  18. 豪迪QQ群发通杀破解补丁使用教程
  19. 三种LCA算法(一):Doubly算法(倍增算法)
  20. 家用投影机预埋布线图_家庭影院装修如何布线(装修前必看·附图)

热门文章

  1. python自动点赞功能
  2. 走在同样的路上,遇见自己的风景
  3. 编好的python程序在自己的电脑上供其他程序调用方法
  4. python中str的index什么意思_python index函数是什么意思
  5. 使用YOLOv3实现目标检测
  6. IE8-9禁用加载项提示
  7. 解释用于语义面部编辑(Semantic Face Editing)的GAN的隐空间(Latent Space)
  8. 【springboot+云计算】B/S医院信息管理系统源码(云HIS)
  9. Ubuntu18.04下安装openfoam的一种方法
  10. ExecuteNonQuery(),ExecuteScalar(),ExecuteReader的用法-转