基于分组码的消息验证码的程序实现

2023/11/30 8:56:42

目 录
摘 要 I
1 绪论 1
1.1 课题研究背景和意义 1
1.2 课题研究现状 1
2 CBC MAC的特征和基本工作原理 2
2.1 CBC MAC的特征和码集选择的原则 2
2.2 CBC MAC生成原理 2
2.3 CBC MAC模块结构图 3
3 FPGA和VHDL语言 4
3.1 概述 4
3.2 VHDL语言特点 5
3.2.1 常用硬件描述语言简介 5
3.2.3 VHDL程序的基本结构 6
3.3 Quartus II 简介 6
4 程序实现及结果分析 8
4.1 设计方案论证 8
4.2 生成模块设计 8
4.2.1 设计原理 8
4.2.2 仿真波形 9
4.3 校验模块设计 9
4.3.1 设计原理 9
4.3.2 仿真波形 10
4.4 顶层设计 10
4.4.1 顶层设计原理 10
4.4.2 顶层设计仿真波形 11
参考文献 12
附 录 13
致 谢 16
1.2 课题研究现状
循环码是具有循环移位特性且能纠错的分组码。纠错码的译码是该编码能否得到实际应用的关键所在。译码器往往比编码较难实现,对于纠错能力强的纠错码更复杂。根据不同的纠错或检错目的,循环码译码器可分为用于
纠错目的和用于检错目的的循环码译码器。任何两个相邻的循环码只有一位数字不同,因此循环码具有可靠性高的优点,在通信、军事等领域中应用非常广泛。由于循环码是无权码,书写和编制都比普通二进制码麻烦,正确的编制是电路设计的关键。
目前常用的实现CBC MAC编码语言有C语言、Verilog和VHDL语言。但由于VHDL有更强的行为描述能力及其对硬件设计的独立性,从而避开具体的器件结构,从逻辑行为上描述和设计该电子系统使得程序实现较为方便。从以上方面考虑,本设计中采用VHDL程序实现。

2 CBC MAC的特征和基本工作原理
2.1 CBC MAC的特征和码集选择的原则
CBC MAC即分组码的消息验证码是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。但是信息字段和校验字段的长度也要满足一定的要求,即有码集选择原则。
CBC MAC码集选择的原则:若设码字长度为N,信息字段为K位,校验字段为R位(N=K+R),则对于CBC MAC码集中的任一码字,存在且仅存在一个R次多项式g(x),使得 V(x)=A(x)g(x)=xRm(x)+r(x);
  其中: m(x)为K-1次信息多项式, r(x)为R-1次校验多项式,
  g(x)称为生成多项式:
  g(x)=g0+g1x1+ g2x2+…+g(R-1)x(R-1)+gRxR
  发送方通过指定的g(x)产生CBC MAC码字,接收方则通过该g(x)来验证收到的CBC MAC码字。
2.2 CBC MAC生成原理
经过CBC MAC方式编码的串行发送序列码,可称为CBC MAC码,共有两个部分组成:k位有效信息数据和r位CBC MAC校验码。其中r位CBC MAC校验码是通过k位有效信息序列被一个事先选择的r+1位“生成多项式”相“除”后得到的(r位余数即是CBC MAC校验码)。CBC MAC校验码一般在有效信息发送时产生,拼接在有效信息后被发送;在接收端,CBC MAC码用同样的生成多项式相除,除尽表示无误,弃掉r位CBC MAC校验码,接收有效信息;反之,则表示传输出错,纠错或请求重发。
实际的CBC MAC校验生成是采用二进制模2算法得到的,即加法不进位,减法不借位,是一种异或操作。生成多项式G(x)是经过严格的数学分析和实验后确定的,有相应的国际标准。

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164. ALL;
USE IEEE.STD_LOGIC_UNSIGNED. ALL;
USE IEEE.STD_LOGIC_SIGNED. ALL;
USE IEEE.STD_LOGIC_ARITH. ALL;
ENTITY CBC MACm IS
	PORT ( clk,datald : IN STD_LOGIC;
		sdata   :IN STD_LOGIC_VECTOR(11 DOWNTO 0);
		dataCBC MACo:OUT STD_LOGIC_VECTOR(16 DOWNTO 0);
		hsend :out std_logic);
end CBC MACm;
architecture one of CBC MACm is
	constant multi_coef:std_logic_vector(5 downto 0):="110101";
	signal cnt:std_logic_vector(4 downto 0);
	signal sdatam:std_logic_vector(11 downto 0);
	signal dtemp,rdataCBC MAC:std_logic_vector(16 downto 0);
	signal st:std_logic:='0';
begin
process(clk)
	variable CBC MACvar:std_logic_vector(5 downto 0);
begin
	if (clk'event and clk='1') then
	if (st='0' and datald='1') then dtemp<=sdata &"00000"; 
        sdatam<=sdata; cnt<= (others=>'0'); hsend<='0'; st<='1'; 
elsif(st='1' and cnt<12) then cnt<=cnt+1;  
	if(dtemp(16)='1') then CBC MACvar:=dtemp(16downto11) xor multi_coef;
		       dtemp<=CBC MACvar(4 downto 0) & dtemp(10 downto 0) & '0';
			else dtemp<=dtemp(15 downto 0) & '0'; 
			end if;
elsif(st='1' and cnt=12) then dataCBC MACo<=sdatam & dtemp(16 downto 12);
			hsend<='1'; cnt<=cnt+1;
		elsif(st='1' and cnt=13) then hsend<='0'; st<='0';
		end if;
	end if;
end process;
end one;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.jnnr.cn/a/137161.html

相关文章

低代码平台和无代码平台有什么区别

低代码&#xff08;LowCode&#xff09;/无代码(NoCode)”是技术界近几年的热门词汇之一&#xff0c;随着企业数字化发展的深入&#xff0c;越来越多的场景化需求要求企业具备更加灵活敏捷的应用开发能力&#xff0c;传统应用开发模式周期长、技术人员能力要求高&#xff0c;无…

【数据结构】树和二叉树以及经典例题

目录1.树的基本概念1.1 树的特点1.2 树的一些相关概念1.3 树的表示1.3.1 那种结构表示树最优&#xff1f;&#xff08;不是二叉树&#xff0c;就是普通的树&#xff09;1.4 树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09;2. 二叉树&#xff08;重点&#x…

Linux挂载Windows端NFS服务(实现板端Linux与PC互传文件)

Linux挂载Windows端NFS服务&#xff08;实现板端Linux与PC互传文件&#xff09; 1. kernel编译时打开NFS客户端服务 在宿主机打开kernel文件夹&#xff0c;先make clean&#xff0c;然后make menuconfig&#xff0c;进入配置界面&#xff1a; 使用/查找NFS&#xff0c;找到Ne…

【BOOST C++ 13 并行编程】(5) Boost.Atomic

一、说明 Boost.Atomic 提供类 boost::atomic&#xff0c;可用于创建原子变量。它们被称为原子变量&#xff0c;因为所有访问都是原子的。 Boost.Atomic 用于多线程程序&#xff0c;当在一个线程中访问变量不应被访问相同变量的另一个线程中断时。如果没有 boost::atomic&#…

Android Gradle - AGP(Android Gradle Plugin)更新失败,你遇到了吗?

因为项目中有Java和Kt&#xff0c;同时也是组件化项目&#xff0c;所以配置方面一直存在一些问题&#xff08;项目可正常运行&#xff0c;只是影响开发效率&#xff09;&#xff0c;此处仅记录我在AndroidStudio中更新AGP&#xff08;Android Gradle Plugin,即Android 官方开发…

redis哨兵系列1

需要配合源码一起康~ 9.1 哨兵基本概念 官网手册yyds&#xff1a;https://redis.io/docs/manual/sentinel/ redis主从模式&#xff0c;如果主挂了&#xff0c;需要人工将从节点提升为主节点&#xff0c;通知应用修改主节点的地址。不是很友好&#xff0c;so Redis 2.8之后开…

nuxt 如何生成sitemap.xml 动静态站点地图

前言 sitemap.xml的作用是将我们网站的所有页面都被SEO&#xff08;浏览器搜索引擎&#xff09;收录&#xff0c;我们网站的内容更容易被用户搜到&#xff0c;同时增加我们的网站的知名度&#xff0c;排名更靠前。简言之就是用技术做网站推广&#xff0c;所以对于网站推广sitem…

MR直播(混合现实直播)做一场高品质企业培训

阿酷TONY / 2022-11-18 / 长沙 MR&#xff0c;是英文Mixed Reality两个单词的缩写&#xff0c;中文翻译为混合现实。 MR混合现实直播技术是通过在现实环境中引入虚拟场景信息&#xff0c;增强用户体验的真实感&#xff0c;具有真实性、实时互动性等特点。 MR直播解决方案是深…

E-Payment Integrator Delphi Edition

E-Payment Integrator Delphi Edition 通过为组件提供处理信用卡和电子支票交易的直观界面&#xff0c;减轻了集成电子支付支持的复杂性。开发人员无需学习复杂的套接字编程或安全实现。通过使用电子支付集成器&#xff0c;开发人员能够针对当前支持的任何支付网关进行定位和开…

(5)多机器人集群编队策略

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、多机器人集群编队策略1、多机器人协同作业冲突问题&#xff08;1&#xff09;介绍&#xff08;2&#xff09;多机器人系统…

无需重启应用,动态采集任意点位日志

作者&#xff1a; 屿山 现实系统往往有着较高的复杂度&#xff0c;我们借助 Trace、Log、Metric 三驾马车使我们的系统具备了一定的可观测性&#xff0c;但观测位置和信息往往是固定的&#xff0c;而我们所遇到的问题常常是意料之外的&#xff0c;这就导致我们能够定位问题的范…

用树莓派PICO做一个桌面时钟超详细教程!

用树莓派PICO做一个可显示时间和温湿度的桌面时钟一、概述二、材料准备1、树莓派PICO2、DHT11温湿度传感器3、DS1302时钟模块&#xff08;选用&#xff09;4、SSD1306屏幕5、其他材料三、开始1、连线2、写程序&#xff08;1&#xff09;使用内置RTC函数实现的时钟&#xff08;2…

为什么vue3要选用proxy,好处是什么?

提问 Object.defineProperty()和proxy的区别&#xff1f;为什么vue3要选用proxy&#xff0c;好处是什么&#xff1f; proxy Proxy 对象用于创建一个对象的代理&#xff0c;从而实现基本操作的拦截和自定义&#xff08;如属性查找、赋值、枚举、函数调用等&#xff09;。 Pr…

Spring6整合JUnit5

十七、Spring6整合JUnit5 17.1 Spring对JUnit4的支持 准备工作&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instanc…

第一章《初学者问题大集合》第8节:Java程序初步释疑

当成功运行了第一个Java程序,很多读者都对之前的各项操作以及所写的这行代码有一些不清楚的地方,本节就来解答一下这些问题。其实,初学者的大部分疑问都集中体现在图1-41中。 图1-41 源文件名与类名称 1.类是个什么东西? 前文曾经让各位读者在写代码之前先创建一个“类”…

路由进阶:双点双向路由重发布实验配置

实验拓扑 网络拓扑及IP编址如上图所示&#xff1b;设备的互联地址为192.168.xy.0/24。其中x、y为设备编号。例如R1-R3之间互联的链路网段为192.168.13.0/24&#xff0c;并且R1的接口地址为192.168.13.1&#xff0c;R3的接口地址为192.168.13.3&#xff0c;也就是说IP地址的最后…

【java】 对命名规范的思考——VO,BO,PO,DO,DTO是什么

作为Java开发人员免要接触VO&#xff0c;BO&#xff0c;PO&#xff0c;DO&#xff0c;DTO&#xff0c;但很多朋友对这些概念一直以来都是云里雾里&#xff0c;本来是规范性的东西&#xff0c;使用起来却反而导致更加混乱了。先附上我自己常用的命名习惯&#xff1a; 数据对象&…

centos7—安装mysql

文章目录1.1 卸载MariaDB1.2 官网下载包文件1.3 解压安装包1.4 安装相关的Mysql服务1.5 开启Mysql服务1.1 卸载MariaDB 由于centOS7中默认安装了MariaDB,需要先进行卸载 rpm -qa | grep -i mariadb #查找本地mariadb rpm -e --nodeps mariadb-libs-5.5.68-1.el7.aarch64 #这个…

Java Spring-AOP动态代理-JDK和CGlib实现

Java Spring-AOP CGlib和JDK动态代理实现 编码是为了解决生活中的问题&#xff0c;譬如现在我想用筷子吃饭的时候看手机&#xff0c;那么首先会有两个对象。 现在如果是面向对象编程思想&#xff0c;我们会new一个筷子对象&#xff0c;new一个手机对象&#xff0c;然后先调用…

Keysight是德科技E5061B网络分析仪-安泰测试

E5061B ENA系列网络分析仪从5Hz 至3GHz提供了广泛的频率范围。它不仅支持一般的射频应用(例如滤波器或放大器测量等)&#xff0c;还支持低频应用(例如直流至直流转换器环路增益测量)。因此&#xff0c;它是所有实验台上进行网络分析的最重要工具。 拥有E5061B&#xff0c;您就…
最新文章