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

相关文章
|
数据挖掘 API 开发者
电商API接口:淘宝、1688、拼多多一键对接
本内容展示了部分电商API接口,涵盖淘宝/天猫、1688和拼多多等平台。功能包括商品详情查询(如`item_get`)、店铺信息获取(如`seller_info`)、关键词搜索(如`item_search`)、图片搜索(如`item_search_img`)及搜索词统计与推荐等。每个平台提供独立的Key和Secret以确保安全接入。除展示内容外,还有更多国内外电商平台接口可供使用。适合开发者快速集成和调用电商数据,助力应用开发与数据分析。
|
安全 Linux 定位技术
Curl访问Kerberos SPNEGO保护的HTTP资源
最后,记住,虽然Kerberos的魔法强大且久经考验,但它仍需你谨慎掌握。SPNEGO的舞步看似复杂,但一旦跳起来,你会发现自己在安全和便捷的旋律中翩翩起舞。而Curl,这一灵活敏捷的小工具,它的确有能力成为你施展这些魔法的得力助手。
393 14
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建微服务架构
本文深入探讨了 Python 中的微服务架构,介绍了 Flask、FastAPI 和 Nameko 三个常用框架,并通过实战项目帮助读者掌握这些技术。每个框架都提供了构建微服务的示例代码,包括简单的 API 接口实现。通过学习本文,读者将能够使用 Python 构建高效、独立的微服务。
|
传感器 人工智能 安全
人工智能与物联网:智能家居的新时代
【10月更文挑战第31天】随着科技的发展,人工智能(AI)和物联网(IoT)的融合正引领我们进入全新的智能家居时代。本文探讨了这一技术趋势如何改变生活方式,提升家居的便捷性、高效性和安全性,并展望了未来的挑战和前景。
|
算法 网络架构
|
人工智能 自然语言处理 机器人
销售利器大集结:13种智能销售工具全面解析
该文探讨了人工智能在销售领域的应用,测试了13款领先工具,如Zoho CRM、Email Subject Line Generator和ChatGPT Plus等,这些工具通过数据分析、自动化任务和智能交互提升销售效率。然而,使用AI也带来人机交互和数据安全的挑战。文章强调,结合人工智能和人类销售人员的优势是关键,同时应谨慎处理相关问题。
1243 4
|
Rust Linux API
Rust 本地文档的使用:rustup doc
Rust 本地文档的使用:rustup doc
702 0
|
存储 网络协议 数据库
数据中心网络架构的需求原则及策略
【5月更文挑战第15天】本文讨论了数据中心建设的重要性,它能提升用户体验,保证业务连续性和数据安全。
|
前端开发 Python
在vscode中如何配置Django项目
在vscode中如何配置Django项目
561 0
|
架构师 前端开发 测试技术
API接口测试
API接口测试