LFSR

2023-11-04

c语言中实现LFSR;

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define DIGIT 34
void conversion(unsigned long long num,int* arr) {
	for (int i = 0; i < DIGIT; ++i) {
		arr[DIGIT - 1 - i] = num%2;
		num /= 2;
	}
}
void lfsr(int* arr1,int* arr2,int* target) {
	int x;
	for (int i = 0; i < DIGIT; ++i) {
		target[i] = arr1[3];
		x = ((arr1[0] * arr2[0] + arr1[1] 
			* arr2[1] + arr1[2] * arr2[2]
			+ arr1[3] * arr2[3]) % 2);
		int y = DIGIT-1;
		for (; y > 0;--y) {
			arr1[y] = arr1[y - 1];
		}
		arr1[0] = x;
	}
}
void J_K(int* J, int* K, int* key) {
	if ((J[0] == 0 && K[0] == 0) || (J[0] == 1 && K[0] == 1)) {
		key[0] = J[0];
	}
	else if (J[0] == 1 && K[0] == 0) {
		key[0] = 1;
	}
	else {
		key[0] = 0;
	}
	for (int i = 1; i < DIGIT; ++i) {
		if (J[i] == 0 && K[i] == 0) {
			key[i] = key[i - 1];
		}
		else if (J[i] == 0 && K[i] == 1) {
			key[i] = 0;
		}
		else if (J[i] == 1 && K[i] == 0) {
			key[i] = 1;
		}
		else {
			key[i] = key[i - 1] ^ 1;
		}
	}
}
void ead(int* arr1, int* arr2, int* arr3) {
	for (int i = 0; i < DIGIT; ++i) {
		arr3[i] = arr1[i] ^ arr2[i];
	}
}

void B_D(int* arr) {
	unsigned long long result = 0;
	for (int i = 0; i < DIGIT; ++i) {
		result += arr[i] * pow(2, DIGIT - 1 - i);
	}
	printf(" 学号:");
	printf("%llu\n", result);
}
int main() {
	unsigned long long snum = 16100101116;
	int arr[1024] = { 0 };
	conversion(snum, arr);
	printf(" 原码:");
	for (int i = 0; i < DIGIT; ++i) {
		printf("%d", arr[i]);
	}
	printf("\n");
	int J[DIGIT] = { 0 };
	int K[DIGIT] = { 0 };
	int key[DIGIT] = { 0 };
	int cry[DIGIT] = { 0 };
	int arr0[1024] = { 1,0,1,0 };
	int arr1[1024] = { 0,1,0,1 };
	int arr2[1024] = { 1,1,0,0 };
	lfsr(arr0, arr1, J);
	lfsr(arr0, arr2, K);
	J_K(J, K, key);
	printf("J序列:");
	for (int i = 0; i < DIGIT; ++i) {
		printf("%d", J[i]);
	}
	printf("\n");
	printf("K序列:");
	for (int i = 0; i < DIGIT; ++i) {
		printf("%d", K[i]);
	}
	printf("\n");
	printf(" 密钥:");
	for (int i = 0; i < DIGIT; ++i) {
		printf("%d", key[i]);
	}
	printf("\n");
	ead(arr, key, cry);
	printf(" 密文:");
	for (int i = 0; i < DIGIT; ++i) {
		printf("%d", cry[i]);
	}
	printf("\n");
	ead(key, cry, cry);
	printf(" 原码:");
	for (int i = 0; i < DIGIT; ++i) {
		printf("%d", cry[i]);
	}
	printf("\n");
	B_D(cry);
	system("pause");
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LFSR 的相关文章

  • moviepy快速切分视频并保存片段

    文章目录 1 直接使用ffmepg 2 使用moviepy本身 moviepy安装最新版本 pip install moviepy pre upgrade 版本是v2 0 0 dev2 有两种方法一种快速的 1 直接使用ffmepg fro
  • 基于STM32的DMX512开发笔记

    首先基本了解一下DMX512的基本协议 一 DMX512协议 DMX 是Digital MultipleX 的缩写 意为多路数字传输 DMX512控制协议是美国舞台灯光协会 usITT 于1990年发布的灯光控制器与灯具设备进行数据传输的工
  • 使用小波变换对图像进行去噪

    使用小波变换对图像进行去噪 实现效果 代码 import matplotlib pyplot as plt from skimage restoration import denoise wavelet estimate sigma fro
  • GAN_Unet模型实现

    文章目录 摘要 一 GAN 1 1 输入 输出 1 2 优化目标 1 3 缺点 1 4 CGAN 1 5 LSGAN 1 6 C LSGAN实现 1 7 判别器 总代码 二 Unet 2 1 编码器 2 2 编码器 2 3 效果 2 4 模
  • 深度学习(自编码器)

    深度学习目录 自适应线性单元 Widrow and Hoff 1960 神经认知机 Fukushima 1980 GPU 加速 卷积网络 Chellapilla et al 2006 深度玻尔兹曼机 Salakhutdinov and Hi
  • MVC笔记 初识模型(二)

    1 在视图中创建窗口 新建一个View视图 添加视图 选中复选框 创建强类型视图 需要输入的地方可以用MVC内置的HTML辅助方法来生成字段 需要显示标题的地方可以用 方法 需要显示文本的地方可以使用 方法 在MVC中 可以利用Html B
  • FPGA/IC 秋招笔试/面试题总结(续)

    请根据目录浏览 觉得有用三连支持一下也是一种鼓励 打印版半价半价 联系微信 Crazzy M 原创不易 100页 未经允许 请勿转载 FPGA IC 秋招笔试 面试题总结 目录展示 点击查看 内容展示 FPGA IC 秋招笔试 面试题总结
  • webpack-使用html-webpack-plugin和ejs-loader将侧栏、头部、底部公共html做成模板,并生成合并后的html页面...

    在学习前端自动化之前一直使用 PHP JSP 将在每个页面将头部 侧栏 底部等部分引入 现在前端 娱乐圈 一直噼里啪啦的每天出新东西 自从接触了前端自动化我就觉得这种工作可以交给前端了但一直没时间研究一下 最近有时间看一下 踩了好多坑终于成
  • 10:00面试,10:06就出来了,问题问的实在有点变态

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到8月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降30 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • SVN经典目录结构说明

    SVN经典目录结构说明 SVN的经典目录包含trunk tags branches trunk trunk是主干 也就是主要工作的地方 也是最新的代码存放的地方 branches branches是分支的意思 分支开发和主线开发是可以同时进

随机推荐

  • MySQL数据库和表基础操作

    目录 一 数据库的基本操作 二 表的基本操作 1 表结构操作 2 表数据操作 CRUD增删查改 一 数据库的基本操作 创建数据库 create database 数据库名 切换数据库 use 数据库名 删除数据库 drop database
  • 服务器conda环境打包迁移 dgl安装 版本问题

    总结 租服务器配好conda环境 把环境迁移到没联网的学校服务器 要注意一定要检查两个服务器的CUDA版本是不是不同的 这可能会带来一些问题 因为CUDA是不在conda环境里面的 最后解决安装dgl版本问题还是采用下载whl文件pip离线
  • ICCV 2023

    本文转载自知乎 mywt 已获得作者授权 文章链接 https arxiv org abs 2211 14710 代码链接 3DPPE on petrv1 v2 https github com drilistbox 3DPPE 3DPPE
  • win10环境Vscode快速配置编译运行C文件

    一 安装并正常运行vscode 下载vscode插件 安装C C 插件和code run插件 二 下载MinGW w64 1 下载地址 https sourceforge net projects mingw w64 2 根据电脑配置选择合
  • SetupDiGetDeviceInterfaceDetail

    SetupDiGetDeviceInterfaceDetail 该函数返回设备接口的详细信息 BOOL SetupDiGetDeviceInterfaceDetail In HDEVINFO DeviceInfoSet In PSP DEV
  • STM32定时器系列 - STM32常规定时器时基与时钟源

    常规定时器包括 基本定时器 通用定时器和高级定时器 基本定时器 没有任何对外输入 输出 主要用作时基计数 定时 通用定时器 除了基本定时器的时基功能外 还可对外做输入捕捉 输出比较以及连接其它传感器接口 编码器和霍尔传感器 高级定时器 此类
  • C语言深入理解指针(非常详细)(一)

    目录 内存和地址 内存 编址的理解 指针变量和地址 取地址操作符 指针变量和解引用操作符 指针变量 如何拆解指针类型 解引用操作符 指针变量的大小 指针变量类型的意义 指针的解引用 指针 整数 const修饰指针 const修饰变量 con
  • 【Mybatis】Mybatis插入中文乱码问题

    1 首先看数据库中和idea中是否都是utf 8编码 1 数据库 新建查询 gt 输入 SHOW FULL COLUMNS FROM 数据库名 表名 查看所有字段编码 2 IDEA 点击File Settings Editor File E
  • 后端开发学习Vue(一)

    Vue的介绍 官网 https cn vuejs org Vue是一个简单容易上手前端框架 例如 下面的代码可以快速构建一个表格
  • rpy2库

    在数据分析中 Python和R各有千秋 虽然Python或R都能在数据分析打通关 从采集 清洗 预处理 分析 可视化 但是在不同的环节 不同的语言易用程度不同 Python胜在干脏活累活 诸如数据采集 数据清洗 机器学习等 而R语言胜在统计
  • 【机器学习】聚类【Ⅰ】基础知识与距离度量

    主要来自周志华 机器学习 一书 数学推导主要来自简书博主 形式运算 的原创博客 包含自己的理解 有任何的书写错误 排版错误 概念错误等 希望大家包含指正 由于字数限制 分成五篇博客 机器学习 聚类 基础知识与距离度量 机器学习 聚类 原型聚
  • 用c语言打印九九乘法表

    分析 这是一个典型的使用循环嵌套的题目 把题目分成两部分 被乘数和乘数 被乘数的变化是从1变化到9 乘数的变化是根据被乘数而来 这样就决定了被乘数的变化做为外循环 乘数的变化作为内循环 1 1 1 2 1 2 2 2 4 3 1 3 3 2
  • 路径遍历(目录遍历)

    一 简介 路径遍历攻击也称为目录遍历 旨在 访问存储在web根文件夹之外的文件和目录 通过操纵带有 点 斜线 序列及其变化的文件或使用绝对路径来引用文件的变量 来访问存储在文件系统上的任意文件和目录 包括应用程序源代码 配置和关键系统文件
  • 中国移动光猫无线路由一体机如何再接另外一个无线路由器

    将无线路由器连接光猫 用一条网线一端接入光猫网口1或网口3或网口4 另一端接入无线路由器WAN接口 将无线路由器连接电脑 用一条网线一端接入无线路器LAN接口 另一端插入电脑 光猫的默认地址为192 168 1 1 所以无线路由器的LAN口
  • 日期加年,返回年份

    日期加年 返回字符串 param date str yyyy mm dd 必须是这个格式 param year 加的年 return string 年份 static function dateAddYear date str year i
  • 数据库连接异常:create connection error, url: jdbc:mysql://ip/数据库名, errorCode 0, state 08S01问题处理

    今天项目中新增了一部分接口 本地测试好之后打包部署到测试环境 数据库竟然连接失败 报错信息如下 create connection error url jdbc mysql ip 数据库名 errorCode 0 state 08S01 这
  • solidworks齿轮编辑_如何应用solidworks进行齿轮工程图绘制

    引言 齿轮是一种常用的传动零件 也是机械设计过程中经常需要设计的一种零件 由于齿轮的工程图绘制与一般零件有较大区别 在利用一般的三维软件设计出三维图形后并不能马上得到准确的二维图形 这种情况会大大降低工程技术人员的设计速度 增加设计成本 S
  • 安卓数据线ssh连树莓派(超简单)

    无需联网 无需无限网卡 树莓派 sudo vim etc network interfaces 添加或修改这句iface usb0 inet dhcp 然后手机数据线插上树莓派 开启usb网络共享 用better terminal或者ter
  • 记录一个std::future和std::async的demo

    Demo和代码简述 子线程函数 参数a传进去模拟遇到的带参数问题 函数的返回值可以是处理完的任意值 若有返回值则get 到的就是返回值 比如这个demo里get到的就是3 int TestNoClass int a int main int
  • LFSR

    c语言中实现LFSR define CRT SECURE NO WARNINGS include