线性反馈移位寄存器
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/1:https://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的三个基本属性
- 平衡属性
- 运行长度属性
- 自相关特性
此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
联系人:
如果有任何疑问、困惑或反馈,请与我联系
- nikesh bajaj
- http://nikeshbajaj.in
- n.bajaj@qmul.ac.uk
- bajaj[dot]nikkey[at]gmail[dot]com