本文只提供实现方法,建议读者先自行了解相关知识,再阅读本文代码。
结果截图:
C++代码:

// LFSR.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include <iostream>
#include <stdlib.h>
#include <bitset>
#define n 4
using namespace std;
string BitStrToStr(string bstr)
{string str = "";//每八位转化成十进制,然后将数字结果转化成字符int sum;for (int i = 0; i < bstr.size(); i += 8){sum = 0;for (int j = 0; j < 8; j++)if (bstr[i + j] == '1')sum = sum * 2 + 1;elsesum = sum * 2;str = str + char(sum);}return str;
}
int main()
{bitset<n> bint(6);bitset<n> str(bint);string s1, s2;/*for (int i = bint.size() - 1; i >= 0; i--)cout << bint[i];*/cout << "初始状态为:" << bint.to_string() << endl;do {s1 = bint.to_string();s2.push_back(s1[3]);int j = bint[n - 1] ^ bint[0];bint.operator>>=(1);bint[n - 1] = j;} while (str.to_string() != bint.to_string());cout << "输出序列为:" << s2 << endl;string msg = "hello,world!";string cip = "";for (int i = 0; i < msg.size(); i++){bitset<8> bits = bitset<8>(msg[i]);string temp = bits.to_string();cip = cip+temp;}cout << "明文:" << msg << endl;;cout <<"明文二进制:" <<cip << endl;int len = s2.length();for (int i = 0; i < cip.size(); ++i) {if (cip[i] != s2[i % len]){cip[i] = '1';}else{cip[i] = '0';}}cout <<"密文二进制:"<< cip << endl;//cout << "密文直译:" << BitStrToStr(cip)<<endl;for (int i = 0; i < cip.size(); ++i) {if (cip[i] != s2[i % len]){cip[i] = '1';}else{cip[i] = '0';}}cout << "密文解译:" << BitStrToStr(cip);return 0;
}

密码学二:LFSR(线性反馈移位寄存器)相关推荐

  1. LFSR线性反馈移位寄存器循环码编码原理

    线性反馈移位寄存器(LFSR)循环码编码原理    作为知识储备,近日在学习循环码编码的原理,教材为John G.Proakis和Masoud Salehi所著的<数字通信>第五版,循环码 ...

  2. LFSR线性反馈移位寄存器Verilog实现

    用Verilog实现如下图所示的线性反馈移位寄存器: The reset should resetthe LFSR to 1 直接写逻辑门的代码 这种写法比较笨拙. 这里寄存器只有5 bits,数量不 ...

  3. 线性反馈移位寄存器(LFSR)和 Berlekamp-Massey 算法

    应用密码学课上学习了 BM 算法,林老师说期末必考.做课后题时,让求解一个20长序列的 LFSR,本人算了两大页纸,还算错了两遍 (╬ ̄皿 ̄) 这里仔细研究下,谈谈我自己对它的理解. 文章目录 LFS ...

  4. 线性反馈移位寄存器LFSR(斐波那契LFSR(多到一型)和伽罗瓦LFSR(一到多型)|verilog代码|Testbench|仿真结果)

    线性反馈移位寄存器LFSR 一.前言 二.LFSR简介 三.斐波那契LFSR和伽罗瓦LFSR 3.1 斐波那契LFSR 3.1.1 斐波那契LFSR 3.1.2 verilog代码 3.1.3 Tes ...

  5. 四类九种移位寄存器总结(循环(左、右、双向)移位寄存器、逻辑和算术移位寄存器、串并转换移位寄存器、线性反馈移位寄存器LFSR|verilog代码|Testbench|仿真结果)

    移位寄存器总结 一.前言 二.简单循环左移/右移/双向移位寄存器 2.1 简单循环左移/右移/双向移位寄存器 2.2 verilog代码 2.3 Testbench 2.4 仿真结果 三.逻辑移位与算 ...

  6. 详解线性反馈移位寄存器(LFSR)

    转载于(九)详解线性反馈移位寄存器(LFSR) 文章目录 LFSR的由来 LFSR具体内容 对LFSR的密钥流攻击 延伸 书籍推荐 LFSR的由来 1. 移位寄存器: 移位寄存器(ShiftRegis ...

  7. 【Verilog基础】一文搞懂线性反馈移位寄存器(LFSR)

    文章目录 一.理论 1.1.LFSR 引入 1.1.1.移位寄存器 1.1.2.反馈移位寄存器 1.1.3.线性反馈移位寄存器 1.2.LFSR深入及m序列介绍 1.2.1.LFSR的反馈函数 1.2 ...

  8. HDLBits 系列(21)LFSR(线性反馈移位寄存器)

    目录 5 bit LFSR 3 bit LFSR 32 bit LFSR 5 bit LFSR A linear feedback shift register is a shift register ...

  9. quartus仿真6:74194构建线性反馈移位寄存器计数器LFSR

    扭环形计数器具有8个有效状态,仍然有8个无效状态.进一步提高移位寄存器构建的计数器的有效状态数,可采用线性反馈移位寄存器计数器(Linear Feedback Shift-Register Count ...

  10. LFSR(线性反馈移位寄存器, Linear-feedback shift register

    1 移位寄存器 移位寄存器(Shift Register,SR)曾在SM4中提到过,是指有若干个寄存器排成一行,每个寄存器中都存储着一个二进制数(0或1).移位寄存器每次把最右端(末端)的数字输出,然 ...

最新文章

  1. 16-flutter-Swiper 插件的使用
  2. CTFshow 文件包含 web81
  3. 一种更好的汇报性能测试结果的方法(译)
  4. 《大型网站技术架构》读书笔记一:大型网站架构演化
  5. java之写接口回调编程经验改进
  6. 什么是485中继器,RS-485中继器产品介绍
  7. 分苹果(信息学奥赛一本通-T1081)
  8. 不属于python数据类型的是_python基础3 ---python数据类型二
  9. ubuntu ssh密钥_生成SSH密钥以在Ubuntu中进行无密码登录
  10. 【转载】六合一调试神器TTL转USB模块
  11. 抖音短视频数据分析报告工具
  12. LINNAEUS:生物医学文献的物种名称识别系统
  13. tracert和traceroute区别在哪?
  14. 炫酷网站模板,css,html
  15. 前端JS 调用 Google地图 以及拖拽地图事件触发
  16. 备战下半年秋招,分享蚂蚁Java岗面试题80+
  17. 打开ftp文件服务器,打开ftp服务器文件管理
  18. 外贸询盘、对话、常用话术英语(上)
  19. 数论读书笔记——线性丢番图方程——解不定方程
  20. 2021年数据中台行业十大关键词

热门文章

  1. 根据二叉树序列构造二叉树
  2. imx6q pwm3 修改占空比
  3. 聚焦隐形正畸方案,正雅齿科GS系列效果显著
  4. vue--elementui中修改el-input样式
  5. 股票详情接口 html5,新浪股票API接口
  6. 5G消息可能失败的原因!
  7. Android Studio AAR集成方法和使用
  8. 易基因技术推介|全基因组重亚硫酸盐甲基化测序(WGBS)
  9. 【六】storm的DRPC
  10. iphone充电图_如何为iPhone 7充电并同时听音乐