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

相关文章
|
JavaScript 数据可视化 定位技术
手把手教你用Pyecharts绘制地图~
大家好,我是志斌~ 今天来给大家分享一下如何用Pyecharts绘制地图。
3012 0
|
机器学习/深度学习 算法 JavaScript
密码学系列之四:一文搞懂序列密码
密码学系列之四:一文搞懂序列密码
1705 0
|
7月前
|
数据挖掘 API 开发者
电商API接口:淘宝、1688、拼多多一键对接
本内容展示了部分电商API接口,涵盖淘宝/天猫、1688和拼多多等平台。功能包括商品详情查询(如`item_get`)、店铺信息获取(如`seller_info`)、关键词搜索(如`item_search`)、图片搜索(如`item_search_img`)及搜索词统计与推荐等。每个平台提供独立的Key和Secret以确保安全接入。除展示内容外,还有更多国内外电商平台接口可供使用。适合开发者快速集成和调用电商数据,助力应用开发与数据分析。
392 1
|
7月前
|
安全 Linux 定位技术
Curl访问Kerberos SPNEGO保护的HTTP资源
最后,记住,虽然Kerberos的魔法强大且久经考验,但它仍需你谨慎掌握。SPNEGO的舞步看似复杂,但一旦跳起来,你会发现自己在安全和便捷的旋律中翩翩起舞。而Curl,这一灵活敏捷的小工具,它的确有能力成为你施展这些魔法的得力助手。
237 14
|
10月前
|
人工智能 自然语言处理 算法
《解锁鸿蒙AI开发:探秘必备集成开发环境》
在鸿蒙系统与人工智能融合的创新浪潮中,选择合适的开发工具至关重要。DevEco Studio作为华为官方的全能开发利器,基于IntelliJ IDEA,提供丰富的项目模板、智能代码补全和强大的调试优化功能,助力开发者高效完成应用开发。DevEco CodeGenie通过AI赋能,以智能知识问答和代码生成功能显著提升开发效率,减少重复性工作。而Visual Studio Code凭借其轻量灵活的特点和丰富的插件生态,为鸿蒙开发提供了更多选择。三者各具优势,开发者可根据需求选择最适合的工具,共同推动鸿蒙生态的繁荣发展。
449 0
|
存储 API
鸿蒙元服务项目实战:终结篇之备忘录搜索功能实现
开发元服务,有很多的限制性因素,比如包的大小限制,相关API限制,所以,我们在实际开发的时候,具体Api能否使用,还需要去官网查看一下,目前,针对当前这个小项目,总结了几个小问题,大家在开发的过程中可以作为参考。
286 2
鸿蒙元服务项目实战:终结篇之备忘录搜索功能实现
|
算法 网络架构
|
传感器 人工智能 安全
人工智能与物联网:智能家居的新时代
【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的解决办法
1091 0
|
存储 安全 编译器
【C语言】动态内存管理 -- -- 深入了解malloc、calloc、realloc、free、柔性数组(万字深入了解)
【C语言】动态内存管理 -- -- 深入了解malloc、calloc、realloc、free、柔性数组(万字深入了解)
365 0
【C语言】动态内存管理 -- -- 深入了解malloc、calloc、realloc、free、柔性数组(万字深入了解)

热门文章

最新文章