线性反馈移位寄存器

pylfsr的Python项目详细描述


线性反馈移位寄存器

Github Page

PyPi - project

Documentation

Python

要求:numpy

安装

pip

pip install pylfsr

从源代码构建

下载存储库或用git克隆它,在目录中的cd之后用

python setup.py install

示例

示例1:带反馈多项式的5位lfsrx^5+x^2+1

# import LFSR
import numpy as np
from pylfsr import LFSR

L = LFSR()

# print the info
L.info()

5 bit LFSR with feedback polynomial  x^5 + x^2 + 1
Expected Period (if polynomial is primitive) =  31
Current :
State        :  [1 1 1 1 1]
Count        :  0
Output bit   : -1
feedback bit : -1
L.next()
L.runKCycle(10)
L.runFullCycle()
L.info()

示例2**:5位lfsr,具有custum状态和反馈多项式

state = [0,0,0,1,0]
fpoly = [5,4,3,2]
L = LFSR(fpoly=fpoly,initstate =state, verbose=True)
L.info()
tempseq = L.runKCycle(10)
L.set(fpoly=[5,3])

例3**:23位lfsr,具有custum状态和反馈多项式

L = LFSR(fpoly=[23,18],initstate ='random',verbose=True)
L.info()
L.runKCycle(10)
L.info()
seq = L.seq

示例4**:获取反馈多项式或列表

参考号:http://www.partow.net/programming/polynomials/index.html

L = LFSR()
# list of 5-bit feedback polynomials
fpoly = L.get_fpolyList(m=5)

# list of all feedback polynomials as a dictionary
fpolyDict = L.get_fpolyList()

之间更改反馈多项式
L.changeFpoly(newfpoly =[23,14],reset=False)
seq1 = L.runKCycle(20)

# Change after 20 clocks
L.changeFpoly(newfpoly =[23,9],reset=False)
seq2 = L.runKCycle(20)

对于A5/1 GSM流密码生成器

参考文章:增强a5/1https://doi.org/10.1109/ETNCC.2011.5958486

# Three LFSRs initialzed with 'ones' though they are intialized with encription key
R1 = LFSR(fpoly = [19,18,17,14])
R2 = LFSR(fpoly = [23,22,21,8])
R3 = LFSR(fpoly = [22,21])

# clocking bits
b1 = R1.state[8]
b2 = R1.state[10]
b3 = R1.state[10]


Matlab

文件夹:https://github.com/Nikeshbajaj/Linear_Feedback_Shift_Register/tree/master/matlabfiles

说明 对于任何给定的反馈抽头(多项式),使用lfsr的genrate randon二进制序列, 这还将检查lfsr的三个基本属性

  1. 平衡属性
  2. 运行长度属性
  3. 自相关特性

此Matlab代码适用于具有给定抽头的任意长度LFSR(反馈多项式)-通用,有三个文件lfsrv1.m an lfsrv2.m,lfsrv3.m

LFSRv1

此函数将返回lfsr的所有状态,并检查lfsr的三个基本属性 (1)平衡特性(2)运行长度特性(3)自相关特性

示例

s=[1 1 0 0 1] 
t=[5 2]
[seq c] =LFSRv1(s,t)

lfsrv2

此函数将只返回生成的序列,所有lfsr的状态都不会进行属性验证 在这里。使用此函数可避免每次执行程序时进行验证。

示例

s=[1 1 0 0 1] 
t=[5 2]
[seq c] =LFSRv2(s,t)

LFSRv3(更快)

seq=lfsrv3(s,t,n) 此函数仅生成N位序列。这比其他两个函数更快,因为这并没有给出lfsr的每个状态

示例

s=[1 1 0 0 1]  
t=[5 2]
seq =LFSRv3(s,t,50)

提示

  • 如果要在任何程序的中间使用此函数,请使用验证为0的lfsrv2或lfsrv1。
  • 如果您想使长长度的lfsr快速运行,请使用lfsrv3.m

联系人:

如果有任何疑问、困惑或反馈,请与我联系

博士生:伦敦玛丽皇后大学和热那亚大学


欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java比较空对象   JavasocketUDP循环   更改活动时使用java“安卓.view.InflateException:二进制XM文件行”   java可以在EclipseRCP中定义ViewPart或Workbench的最小大小吗?   java试图根据用户输入对列表中的整数进行排序   java如何避免Hibernate在oneToMany关系上创建外键限制   java创建一个简单的字符串解析器,交互式外壳式   java如何解析JSON并将其值转换为数组?   JavaAzure:Image Magick提供0 KB的输出?   使用Azure Event Hubs for Apache Kafka生态系统和OAuth在Java中发送和接收消息   java如何将Oracle的Interval数据类型格式化为HH:MM格式?   java jsoup无法在安卓上正确解析HTML   java如何计算2ndArray中的距离?   java Swing Worker线程说在超类中没有Process()方法   带有内部组件的java单击JPanel   javajsp中的html引号转义   java Maven在打包jar时无法检索buildNumber   Java中的linux八进制转义导致错误的字节值,编码问题?