流密码与线性反馈移位寄存器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

相关文章
|
9月前
|
开发框架 安全 Java
Web渗透思路及src漏洞挖掘思路
本内容系统讲解Web渗透测试思路,涵盖系统、网站、App及服务层面的渗透技术,包括漏洞探测工具使用、CMS系统分析、开发框架识别等,并介绍了SRC漏洞挖掘及CNVD证书提交流程,助力网络安全学习与实践。
1314 0
Web渗透思路及src漏洞挖掘思路
|
数据挖掘 API 开发者
电商API接口:淘宝、1688、拼多多一键对接
本内容展示了部分电商API接口,涵盖淘宝/天猫、1688和拼多多等平台。功能包括商品详情查询(如`item_get`)、店铺信息获取(如`seller_info`)、关键词搜索(如`item_search`)、图片搜索(如`item_search_img`)及搜索词统计与推荐等。每个平台提供独立的Key和Secret以确保安全接入。除展示内容外,还有更多国内外电商平台接口可供使用。适合开发者快速集成和调用电商数据,助力应用开发与数据分析。
|
12月前
|
安全 Linux 定位技术
Curl访问Kerberos SPNEGO保护的HTTP资源
最后,记住,虽然Kerberos的魔法强大且久经考验,但它仍需你谨慎掌握。SPNEGO的舞步看似复杂,但一旦跳起来,你会发现自己在安全和便捷的旋律中翩翩起舞。而Curl,这一灵活敏捷的小工具,它的确有能力成为你施展这些魔法的得力助手。
340 14
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建微服务架构
本文深入探讨了 Python 中的微服务架构,介绍了 Flask、FastAPI 和 Nameko 三个常用框架,并通过实战项目帮助读者掌握这些技术。每个框架都提供了构建微服务的示例代码,包括简单的 API 接口实现。通过学习本文,读者将能够使用 Python 构建高效、独立的微服务。
|
人工智能 自然语言处理 算法
《解锁鸿蒙AI开发:探秘必备集成开发环境》
在鸿蒙系统与人工智能融合的创新浪潮中,选择合适的开发工具至关重要。DevEco Studio作为华为官方的全能开发利器,基于IntelliJ IDEA,提供丰富的项目模板、智能代码补全和强大的调试优化功能,助力开发者高效完成应用开发。DevEco CodeGenie通过AI赋能,以智能知识问答和代码生成功能显著提升开发效率,减少重复性工作。而Visual Studio Code凭借其轻量灵活的特点和丰富的插件生态,为鸿蒙开发提供了更多选择。三者各具优势,开发者可根据需求选择最适合的工具,共同推动鸿蒙生态的繁荣发展。
626 0
|
传感器 人工智能 安全
人工智能与物联网:智能家居的新时代
【10月更文挑战第31天】随着科技的发展,人工智能(AI)和物联网(IoT)的融合正引领我们进入全新的智能家居时代。本文探讨了这一技术趋势如何改变生活方式,提升家居的便捷性、高效性和安全性,并展望了未来的挑战和前景。
【异常】svn: E200009: Commit failed (details follow)/both sides of the move must be committed together的解决办法
svn: E200009: Commit failed (details follow)/both sides of the move must be committed together的解决办法
1291 0
|
算法 网络架构
|
Rust Linux API
Rust 本地文档的使用:rustup doc
Rust 本地文档的使用:rustup doc
664 0
|
IDE 数据可视化 Java
Python语法高亮库Pygments
Python语法高亮库Pygments
978 0

热门文章

最新文章