线性移位寄存序列密码破译

本文探讨了如何破译由线性移位寄存器产生的序列密码。首先介绍了移位寄存器的工作原理,接着阐述了已知的连续字节流,并提供了用于模拟移位寄存器状态变化的GF函数和make_list函数。通过穷举方法,寻找可能的移位寄存器初始状态,以解密加密后的字节流。解密函数decry(cry_string)通过匹配正确字节的数量来确定正确的开关状态,最大处理17位移位寄存器,使用模2加进行计算。
摘要由CSDN通过智能技术生成

目的:
对于线性移位寄存器产生的序列密码其核心是破译出其移位寄存器的数学表达式

移位寄存器产生序列密码原理:
这里写图片描述
对于对于移位寄存器的每一个储存格提供一个初始值,然后通过g0-加-gn的开关进行控制,哪几位进行模2加处理。每进行一次运算后,值向右移动一位,同时生成的新值作为新的输入数据进行输入。反复迭代,得到一连串的加密字节流。

已知条件:
100位由线性移位寄存器产生的连续连续字节流

破译过程

  • 移位寄存器的函数GF(arrange,init):
  • 输入:arrange移位寄存器的向量表达式,init移位寄存器的状态
  • 输出:移位寄存器产生的值
  • 说明:若线性移位寄存器具有实际意义,则其首项与末项均不能为0
    代码实现如下:
def GF(arrange,init):
    #arrange为移位寄存器的开关状态
    #init为移位寄存器的初始状态
    #保证g0 和 gn不为0
    assert arrange[0] == 1
    assert arrange[-1] == 1
    # 得出移位寄存器的阶数
    n = len(arrange) - 1
    #保证初始状态init的长度与阶数相等
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值