序列密码分析——BM算法

article/2025/10/4 0:37:57

一、 算法原理

1. 概念引入

生成与特征多项式

2. BM算法流程

 二、 编程思路

1. 编程思路:

BM算法整体流程较为清晰,其中包含几个核心判断:fnx 能否生成序列a的前n+1位,各l值是否全相等,以及当l值出现不等情况下m-lmn-ln的相对大小关系;编程分别通过Generable(n, f_n, ln, sequence)函数,l_all_equal(l)函数,以及循环遍历找m然后比较m-lmn-ln大小关系的方式实现。

编程时在确定f_n (x)时表示形式上有纠结,开始想的是用一个一维数组保存当前轮f_n (x)各项系数,后发现在算法流程2(2)中会用到之前轮的f_m (x),最终采用二维数组来表示f_n (x),其中第一维表示不同轮,第二维表示该轮下各项系数。

x的幂和fnx 相乘相当于fnx对应多项式系数列表右移了x的幂次数位,在做多项式相加运算时用到的即多项式系数列表下标减去相应幂次数(注意下标越界问题)

因为是在二元域下的运算,还要给相应系数进行模2运算。

2. 关键函数:Generable(n, f_n, ln, sequence):

传入参数:当前轮下n的取值,存放每轮最低次多项式的二维数组f_n,当前轮的次数ln,序列sequence

实现代码如下:

3. 算法流程图:

 

 

三、 结果截图

 

四、 代码

# 判断f_n[n]是否可以生成a的第n+1项
def Generable(n, f_n, ln, sequence):A = 0                                   # 理论计算值if ln == 0:A = 0else:for i in range(ln):                 # Ci = f_n[n][l[n]-i-1]A += (f_n[n][ln-i-1]) * (sequence[n-i-1])if (A % 2) == sequence[n]:# print(n, "okkkkkk", ln, f_n[n])return Trueelse:# print(n, "noooooo", ln, f_n[n])return False# BM算法
def BM(sequence):f_n = [[0 for i in range(len(sequence))] for i in range(len(sequence)+1)]f_n[0][0] = 1                                          # 赋初值 f0=1l = [0 for i in range(len(sequence)+1)]                # 记录每一轮最低次多项式次数for i in range(len(sequence)):if Generable(i, f_n, l[i], sequence):              # 算法流程 1for j in range(len(sequence)):f_n[i+1][j] = f_n[i][j]l[i+1] = l[i]continueelse:                                              # 算法流程 2if l_all_equal(l):                             # 2(1)# print("execute 2(1)")f_n[i+1][0] = 1f_n[i+1][i+1] = 1l[i+1] = i+1else:                                          # 2(2)j = il[i + 1] = max(l[i], i + 1 - l[i])while j <= i:# print(i, j, l[i], l[j])if l[j] < l[i]:m = jbreakj -= 1if(m-l[m] >= i-l[i]):                      # 2(2)(1)# print("execute 2(2)(1)")for k in range(i-l[i]-m+l[m]+1):f_n[i+1][k] = (f_n[i][k]) % 2for k in range(i-l[i]-m+l[m], l[i+1]+1):f_n[i+1][k] = (f_n[i][k] + f_n[m][k-(m-l[m]-i+l[i])]) % 2else:                                      # 2(2)(2)# print("execute 2(2)(2)")for k in range(i-l[i]-m+l[m]+1):f_n[i+1][k] = (f_n[m][k]) % 2for k in range(i-l[i]-m+l[m], l[i+1]+1):f_n[i+1][k] = (f_n[i][k-(i-l[i]-m+l[m])] + f_n[m][k]) % 2return f_n, l# 判断l列表中的数字是否全部相同
def l_all_equal(l):for i in range(len(l) - 1):if l[i] != l[i + 1]:return Falsereturn True# 还原多项式字符串并返回
def print_f(f_n, i):result = ''j = l[i]while j >= 0 :if f_n[i][j] != 0:if j == 0:result += '1 +'else:result += 'x^' + str(j) + '+'j -= 1return result[0:-1]# 将字符串转为int形列表
def Seq_to_list(sequence):result = []for i in sequence:result.append(int(i))return resultif __name__ == "__main__":seq = ['10010000111101000011100000011', '00001110110101000110111100011', '10101111010001001010111100010']for S in seq:f_n, l = BM(Seq_to_list(S))print('输入序列:' + S)print('最短LFSR的特征多项式:' + print_f(f_n, len(S)))print('最低级数:' + str(l[len(S)]))print(" ")


http://chatgpt.dhexx.cn/article/Qm2FaSE7.shtml

相关文章

第五讲 密码分析学

密码学学科分支 两个分支形成既对立又统一的矛盾体 1 安全的定义 安全的概念&#xff1a; “如果把一封信锁在保险柜中&#xff0c;把保险柜藏起来&#xff0c;然后告诉你 去看这封信&#xff0c;这并不是安全&#xff0c;而是隐藏&#xff1b; 相反&#xff0c;如果把一封信…

代换密码的密码分析—详细分析过程

代换密码的密码分析 使用单表代换密码&#xff0c;对于给出的密文进行分析并得到结果&#xff0c;了解加密解密过程 密文信息如下&#xff1a;AHNFCROACOAHNISEFLCIASFVCNWOSEAHNWSRLDWCAHCEIRNTONDATRCFFOSEOANNLTEDTLUMCEUMFRSMAHNNUITETDTTEDJTPTEAHNUOWCNLDOCAOATRCFFBTAS…

密码分析之单表代换原理详解与算法实现

【密码分析&#xff08;单表代换&#xff09;】 1. Equipment &#xff08;1&#xff09; operating system version &#xff1a;WIN 10 &#xff08;2&#xff09; CPU instruction set: x 64 &#xff08;3&#xff09; software&#xff1a;MATLAB R2020a 2.process P…

搞懂差分密码分析,看这篇文章就够了!!

搞懂差分密码分析&#xff0c;这篇文章就够了&#xff01;&#xff01; 关注我&#xff01;我会不定期发一些学习信安的心得体会 文章目录 **搞懂差分密码分析&#xff0c;这篇文章就够了&#xff01;&#xff01;**一、概述二、流密码的线性特性三、差分分析四、toy cipher-差…

线性密码分析(简单笔记)

线性密码分析(简单笔记) 关于差分密码分析的可以看差分密码分析读书报告。欢迎大家讨论留言。 1、发现 在1993年的欧洲密码年会上&#xff0c;日本学者Matsui提出了对DES算法的一种新的攻击方法&#xff0c;即线性密码分析.同年的国际密码年会上&#xff0c;Matsui发现了DES…

密码分析

破译密码体制的一般思路 经典密码分析 古典密码分析可以理解为从密文y中得到明文x&#xff0c;或者是密钥k。密码分析可以分为两类&#xff1a;一类是发现加密方法内部结构的分析攻击&#xff0c;一类是将加密算法看作是黑盒&#xff0c;试图测试所有可能密钥进行破解蛮力攻击…

密码分析(一):差分密码分析

文章目录 一、选择明文攻击&#xff08;chosen-plaintext attack, CPA&#xff09;二、差分密码分析&#xff08;differential cryptanalysis&#xff09;1.原理2.过程2.1 S盒差分分布表2.2 S盒的差分分析 总结参考文献 差分分析是一种选择明文攻击&#xff0c;其基本思想是&am…

密码分析(二):线性密码分析

​ 线性密码分析 一、已知明文攻击&#xff08;known-plaintext attack&#xff09;二、线性密码分析基本原理三、实例3.1 S盒线性逼近表3.2 例题分析3.2.1 分析算法的过程3.2.2 攻击过程加密攻击分析 具体过程 总结参考文献 在1993年欧洲密码年会上&#xff0c;日本学者Matsu…

Bluehost注册流程与问题

Bluehost注册流程与问题 第一步 进入Bluehost官方网站&#xff0c;点击下图中粉色的 Sign Up Now 进行注册 第二步 进入下一个界面后&#xff0c;你可以免费获得一个新的域名&#xff0c;BlueHost 对第一年是免费赠送一个域名&#xff0c;所以输入你想要的域名&#xff0c;然后…

BlueHost主机从零开始使用笔记,我踩过的坑你就不要踩了.

一:购买时,使用官方优惠码BH可以优惠30% 二:登陆后:点击可以显示你购买的主机,点击列表中的域名即可进入管理界面! 三:特别提醒!面板中的部分功能"比如在线文件 管理上传文件",只有使用chrome浏览器才可以,使用360浏览器的时候会出现上传不了的情况. 这里就是坑1 …

hosts文件 (屏蔽网站)

hosts文件 hosts文件是什么 Hosts是一个没有扩展名的系统文件&#xff0c;可以用记事本等工具打开。它是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”&#xff0c;当用户在浏览器中输入一个需要登录的网址时&#xff0c;系统会首先自动从Hosts文件中寻找对应…

2018年最新bluehost主机(中文站)购买教程,送30%优惠码!

Bluehost是一家老牌的美国主机商&#xff0c;行业经验达18年&#xff0c;以稳定性强&#xff0c;速度快著称&#xff0c;是国内使用较多主机之一&#xff0c;在个人站长中的口碑、使用流行度都很高。作为电子商务首选主机的BlueHost主机也深受国内外贸网站、仿牌产品等公司的喜…

bluehost虚拟主机有什么用?适合做什么网站呢?

bluehost作为比较知名的美国主机商&#xff0c;在国内也是非常的受欢迎&#xff0c;并且为了更好的服务国内用户&#xff0c;更是推出了中文站以及中文客服&#xff0c;为 国内用户提供更加本土化以及更加完善的服务&#xff0c;而且而且其机房专门对国内线路进行了优化&#x…

siteground主机和Bluehost主机哪个好,看完这篇你就有自己确定的答案

Siteground主机和Bluehost主机&#xff0c;哪个更好&#xff1f;哪个更适合外贸建站&#xff1f;读完这篇&#xff0c;你就有答案&#xff01; 说实话......我花了太多的时间来做决定。在决定买什么相机、加入什么健身房、甚至选择什么衣服时&#xff0c;都是如此。我花了一下…

linux虚拟主机建站程序,bluehost中国Linux虚拟主机建站过程

无论是我们初次接触海外主机服务商的&#xff0c;还是已经有过使用国内主机商建站经验的&#xff0c;可能初次接触BlueHost(无论是英文或者是中文官方网站产品)可能在应用上稍微有一些困惑。 因为大部分海外主机都使用的cPanel面板(Linux系统主机)&#xff0c;普通的用户肯定是…

蓝色主机 bluehost主机 启用CloudFlare的cdn加速服务

启用CloudFlare的cdn加速服务 1.到CDN官网&#xff08;www.cloudflare.com&#xff09;&#xff0c;注册账号并登陆进入。 2.点击页面右上角 Add Site,输入您的域名。 3.选择CDN套餐&#xff0c;一般用户选择FREE版本的 4.修改DNS记录&#xff0c;选择之后会自动扫描域名的DNS…

Siteground和Bluehost对比,我花了7天时间研究出了结果

Siteground主机和Bluehost主机&#xff0c;哪个更好&#xff1f;哪个更适合外贸建站&#xff1f;读完这篇&#xff0c;你就有答案&#xff01; 说实话......我花了太多的时间来做决定。在决定买什么相机、加入什么健身房、甚至选择什么衣服时&#xff0c;都是如此。我花了一下…

美国主机BlueHost vs HostEase

网站备案对于大部分个人站长而言&#xff0c;花费成本高、程序复杂&#xff0c;因此在挑选主机时&#xff0c;常选择免备案IDC服务商&#xff0c;如美国、香港主机&#xff0c;且前几日国内某免备案机房因个别网站涉及非法言论而配合相关部门采取停网整顿等&#xff0c;为此站长…

BlueHost主机建站教程

BlueHost主机支持一键安装WordPress程序与Discuz程序&#xff0c;下面就给大家演示一下如何一键安装WordPress程序和Discuz程序建站教程&#xff0c;希望对使用BlueHost主机用户有所帮助&#xff01; 腾讯云最新服务器活动--云服务器免费送。 试用领取有人能领到180天。 腾讯…

Bluehost主机安装WordPress步骤

教你一个使用Bluehost主机安装WordPress步骤 使用bluehost主机创建wordpress网站非常简单&#xff0c;但是首先需要先注册bluehost账户。 作为优秀wordpress主机之一的bluehost主机&#xff0c;性价比是很不错的&#xff0c;价格几乎接近免费了&#xff0c;它有很多出色的功能…