流密码与线性反馈移位寄存器LFSR

简介: 本实验带您了解并实现线性反馈移位寄存器LFSR。

流密码与线性反馈移位寄存器LFSR

1. 创建资源

开始实验之前,您需要先创建实验相关资源。

在实验室页面,单击创建资源。

(可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、子用户信息等)。

说明:资源创建过程需要3~5分钟视资源不同开通时间有所差异,ACK等资源开通时间较长。完成实验资源的创建后,您可以在云产品资源列表查看已创建的资源信息,例如:子用户名称、子用户密码、AK ID、AK Secret、资源中的项目名称等。

实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建。

资源创建成功,可在左侧的资源卡片中查看相关资源信息以及RAM子账号信息

2. 实验原理

实验原理

流密码

流密码一般逐字节或者逐比特处理信息。一般来说流密码的密钥长度会与明文的长度相同。流密码的密钥派生自一个较短的密钥,派生算法通常为一个伪随机数生成算法。需要注意的是,流加密目前来说都是对称加密。伪随机数生成算法生成的序列的随机性越强,明文中的统计特征被覆盖的更好。

流密码加解密非常简单,在已知明文的情况下,可以非常容易地获取密钥流。流密码的关键在于设计好的伪随机数生成器。一般来说,伪随机数生成器的基本构造模块为反馈移位寄存器。当然,也有一些特殊设计的流密码,比如 RC4。

多数流密码的基本构造模块为反馈移位寄存器FSR,特别是线性反馈移位寄存器LFSR。

参考资料

线性反馈移位寄存器 - LFSR

密码学导论 - 中国科学技术大学

3. 实验内容

实验内容

编写程序(用C、C++或Python)实现基本LFSR。程序应满足以下要求:

程序应该提示用户LFSR的大小k(单位为比特)。只允许输入小于或等于32的4的倍数。

程序应该提示用户LFSR的原始内容。用户应该输入一个非负的整数,与适当的内容相对应。(例如,如果缓冲区的大小是8,用户输入117,那么缓冲区应该包含01110101)。

程序应该提示用户输入用于确定LFSR中未来位的规则。用户应该输入一个非负整数,对应缓冲区中为了创建下一个移入的比特而进行异或操作的位。

最后,程序应该询问用户运行LFSR的步数,即n,以及用一个文件来存储输出。(输出文件应该有n+1行)。

程序运行示例:

What is the size of your LFSR?
> 8
What are the contents of the original LFSR?
> 211
What rule would you like to use?
> 72
How many steps do you want to run the LFSR?
> 5
What file would you like the output to be stored?
> lfsr.out

运行以上示例创建的文件lfsr.out内容如下:

1 11010011
0 11101001
1 01110100
1 10111010
0 11011101
0 11101110

实验链接:https://developer.aliyun.com/adc/scenario/6395ab7e56ae44ada118a220a985210d

相关文章
|
6月前
|
数据采集 编解码 算法
基于同步矩阵的多通道脑电功能连接分析_kaic
基于同步矩阵的多通道脑电功能连接分析_kaic
|
26天前
|
编解码 人工智能 开发者
长短大小样样精通!原始分辨率、超长视频输入:更灵活的全开源多模态架构Oryx
【10月更文挑战第23天】Oryx 是一种新型多模态架构,能够灵活处理各种分辨率的图像和视频数据。其核心创新在于能够对图像和视频进行任意分辨率编码,并通过动态压缩器模块提高处理效率。Oryx 在处理长视觉上下文(如视频)时表现出色,同时在图像、视频和3D多模态理解方面也展现了强大能力。该模型的开源性质为多模态研究社区提供了宝贵资源,但同时也面临一些挑战,如选择合适的分辨率和压缩率以及计算资源的需求。
29 3
|
3月前
|
算法 数据处理 流计算
流计算引擎数据问题之传播模块工作如何解决
流计算引擎数据问题之传播模块工作如何解决
41 1
|
4月前
|
自然语言处理 算法 搜索推荐
字符串相似度算法完全指南:编辑、令牌与序列三类算法的全面解析与深入分析
在自然语言处理领域,人们经常需要比较字符串,这些字符串可能是单词、句子、段落甚至是整个文档。如何快速判断两个单词或句子是否相似,或者相似度是好还是差。这类似于我们使用手机打错一个词,但手机会建议正确的词来修正它,那么这种如何判断字符串相似度呢?本文将详细介绍这个问题。
283 1
|
6月前
LabVIEW连续采样与有限采样模式
LabVIEW连续采样与有限采样模式
262 0
到底什么是弱上下拉和强上下拉?
到底什么是弱上下拉和强上下拉?
|
编解码 算法 数据可视化
【多重信号分类】超分辨率测向方法——依赖于将观测空间分解为噪声子空间和源/信号子空间的方法具有高分辨率(HR)并产生准确的估计(Matlab代码实现)
【多重信号分类】超分辨率测向方法——依赖于将观测空间分解为噪声子空间和源/信号子空间的方法具有高分辨率(HR)并产生准确的估计(Matlab代码实现)
111 0
|
Linux 测试技术 数据处理
R语言丨根据VCF文件设计引物,自动识别两样本差异SNP位点,调用samtools获取上下游参考序列,快速得到引物序列
R语言丨根据VCF文件设计引物,自动识别两样本差异SNP位点,调用samtools获取上下游参考序列,快速得到引物序列
|
算法
基于自动亮度对比度增强功能的可逆数据隐藏(Matlab代码实现)
基于自动亮度对比度增强功能的可逆数据隐藏(Matlab代码实现)
117 0
|
人工智能 自然语言处理 文字识别
理解指向,说出坐标,Shikra开启多模态大模型参考对话新维度
理解指向,说出坐标,Shikra开启多模态大模型参考对话新维度
206 0
下一篇
无影云桌面