数据加密标准DES硬件实现(Modelsim)

数据加密标准DES硬件实现

  • 本文内容摘要
  • 理论依据和设计内容
  • 仿真结果
  • 整体代码

本文内容摘要

  本文设计并验证了DES的密钥扩展通路,分别采用Round Based方法Pipeline方法两种方式设计并验证DES的明文通路

理论依据和设计内容

  首先,要了解分组密码算法及DES密码。
  密码体制中两种基本方法:扩散和混淆扩散是使小的扰动影响波及全局,即让明文中的每一位影响密文中的许多位。而混淆是使密文与密钥之间的统计关系尽可能的复杂,使攻击者难以从密文推测出密钥,如使用复杂的非线性变换。
  DES对于明文的处理经过三个阶段:

  1. 一是让64bit明文经过初始置换进行比特重排,此阶段不使用密钥
  2. 二是进行16次与密钥相关的加密运算,即置换和替代;
  3. 三是最后一次循环64bit,经过逆初始置换得到,此阶段也不用密钥。

  上述流程如下图所示。
DES加密处理流程图
  DES的密钥为64bit,其中56位为随机生成的二进制码,8位为算法不使用的校验位,如奇偶校验位。DES实现过程中需要一个密钥通路负责产生所需的每一次加密子密钥信息,具体流程图如下图所示。

DES具体流程图
  初始置换IP是对64bit的明文(8×8的矩阵)进行置换移位操作:即将某些位置替换到新的位置上,生成一个重新排列的矩阵表。逆初始置换IP-1即为反向操作。具体操作如下图所示。
初始置换/逆初始变换具体操作图
  之后需要进行16此轮变换:其用到了两个函数,如下图所示。
轮变换函数

  具体操作如下图所示。
轮变换流程图
  然后需要用到扩展运算操作,将32位扩展到48位。之后需要用到SBox函数,其是非线性变换,不易于数学分析提供了更好的安全性。最后进行P置换则可得到此部分输出。
  随后进行密钥通路等操作,经过一系列操作对56位有效密钥位进行变换最终生成48位。整个DES加密的流程图如下图所示:
DES加密整体流程图
  F变换流程如下图所示。
f变换流程图

仿真结果

  测试数据为输入明文64bit的0,输入密钥为64bit的0。此时输出为8CA64DE9C1B123A7。如下图所示:当输入均为设定值后,start输入一个脉冲,此时加密模块读入数据开始进行加密,经过16轮迭代变换后输出最终密文,为64bit数据8CA64DE9C1B123A7,与正确值相符,证明模块正确。
仿真测试波形图
  此外,我创建了一个新的窗口以观察des执行内部所有信号数据值。如下图所示,其中Fout为每一轮f变换中P盒置换得到的32高位数据;FP为每一轮最终迭代运算后的输出值;Rtmp记录了每一轮f变换内的置换后低32位数据。由此波形图可以更清晰地观察到des加密运行中的计算,也更便于在出错时寻找出错位置。
仿真测试波形图2
  下面测试流水线型方式的DES加密模块,如下图所示,可以看到,当使能信号脉冲到来后,DES读入有效输入数据并开始进行加密计算,等待一段时间后计算完成并输出密文。
仿真测试波形图3

整体代码

代码见资源,包含顶层代码、加密读写代码和激励测试代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/231512.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32为基础的模拟I2C通用8bit和16bit读取以及多字节读取

GPIO模拟I2C驱动的通用代码,I2C的寄存器地址有8位和16位的,主要解决了同一个MCU同时处理8位和16位寄存器地址芯片时候的驱动问题。 typedef enum {IIC_8BIT_BASE_ADDR,IIC_16BIT_BASE_ADDR }iic_bits_e; typedef struct {uint8_t DevAddr;uint16_t RegA…

cdr格式怎么打开?cdr文件查看工具CDR Viewer功能介绍

CDRViewer Pro for Mac是一款专业的矢量图形文件查看器,主要用于打开、浏览和查看CorelDRAW(CDR)文件。以下是该软件的主要功能和特点: CDR文件支持:CDRViewer Pro可以快速加载和显示CorelDRAW(CDR&#x…

【面试】Java最新面试题资深开发-微服务篇(1)

问题九:微服务 什么是微服务架构?它与单体架构相比有哪些优势和劣势?解释一下服务发现和服务注册是什么,它们在微服务中的作用是什么?什么是API网关(API Gateway)?在微服务中它有何…

大模型(LLM)+词槽(slot)构建动态场景多轮对话系统

构建动态场景多轮对话系统 引言 在人工智能和自然语言处理领域,聊天机器人的开发一直是一个热点话题。近年来,随着大型语言模型(LLM)的进步,构建能够理解和响应各种用户需求的聊天机器人变得更加可行和强大。本文将介…

Acrel-1000DP分布式光伏系统在某重工企业18MW分布式光伏中应用——安科瑞 顾烊宇

摘 要:分布式光伏发电特指在用户场地附近建设,运行方式以用户侧自发自用、余电上网,且在配电系统平衡调节为特征的光伏发电设施,是一种新型的、具有广阔发展前景的发电和能源综合利用方式,它倡导就近发电,就…

DiffUtil + RecyclerView 在 Kotlin中的使用

很惭愧, 做了多年的Android开发还没有使用过DiffUtil这样解放双手的工具。 文章目录 1 DiffUtil 用来解决什么问题?2 DiffUtil 是什么?3 DiffUtil的使用4 参考文章 1 DiffUtil 用来解决什么问题? 先举几个实际开发中的例子帮助我们感受下: 加载内容流时,第一次加载了ABC,…

gitlab(gitlab-ce)下载,离线安装

目录 1.下载 2.安装 3.配置 4.启动 5.登录 参考: 1.下载 根据服务器操作系统版本,下载对应的RPM包。 gitlab官网: The DevSecOps Platform | GitLab rpm包官网下载地址: gitlab/gitlab-ce - Results in gitlab/gitlab-ce 国内镜像地…

JVM-4-垃圾收集基础

引用计数算法 在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。 对象objA和objB都有字段instance,赋值…

分布式链路追踪 —— 基于Dubbo的traceId追踪传递

文章目录 原文链接RpcContext 上下文对象Dubbo 过滤器(Filter)对象基于Dubbo的traceId追踪传递实现 原文链接 RpcContext 上下文对象 在实现 Dubbo 调用之间的链路跟踪之前,先简单了解 RpcContext 上下文对象和 Filter 过滤器对象&#xff…

python排序算法,冒泡排序和快排

对于排序算法中比较知名的两个算法,分别就是冒泡排序和快速排序,在日常学习和使用中都会听到这两种排序算法的名称,这里主要介绍如何使用python来实现这两种排序算法。 冒泡排序的实现:一是从集合第一个元素开始,每两…

ElasticSearch5.6.2常用transport client Java API操作代码实例

文章目录 版本及环境1 Maven依赖2 创建索引并插入单条数据3 打印所有创建的索引的名称4 查询索引中数据5 删除索引6 创建索引,并批量插入本地csv数据7 查看索引中的前10条数据 版本及环境 windows 11 ElasticSearch 5.6.2 Idea 2020 请注意,5.6.2是已经…

在Deepin系统上安装单机版PVE虚拟化系统

摘要:本文将介绍如何在Deepin系统上安装单机版PVE(Proxmox Virtual Environment)虚拟化系统。PVE是一款基于Debian的虚拟化平台,可以轻松管理和运行虚拟机。我们将通过以下步骤来安装PVE: 系统要求安装PVE 2.1 更新软…

单片机计数功能

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、计数器是什么?1.1 应用 二、计数器原理框图及对输入信号的要求2.1 原理框图2.2对输入信号的要求 三、使用步骤3.1 配置为计数模式3.2 装初值3.3…

0基础学习VR全景平台篇第129篇:认识单反相机和鱼眼镜头

上课!全体起立~ 大家好,欢迎观看蛙色官方系列全景摄影课程! 一、相机 单反和微单 这里说的相机是指可更换镜头的单反/微单数码相机。那两者有何差异呢? 1)取景结构差异 两者最直观的区别在于,微单相机…

html中RGB和RGBA颜色表示法

文章目录 RGB什么是RGBRGB颜色模式的取值范围RGB常用颜色对照表 RGBA什么是RGBARGBA颜色模式的取值范围 总结 RGB 什么是RGB RGB是一种颜色空间,其中R代表红色(Red)、G代表绿色(Green)、B代表蓝色(Blue&a…

100GPTS计划-AI翻译TransLingoPro

地址 https://poe.com/TransLingoPro https://chat.openai.com/g/g-CfT8Otig6-translingo-pro 测试 输入: 我想吃中国菜。 预期翻译: I want to eat Chinese food. 输入: 请告诉我最近的医院在哪里。 预期翻译: Please tell me where the nearest hospital is. 输入: 明天…

Cookie和会话安全

Cookie时Web服务端发送给用户但浏览器的一小段数据,浏览器会存储这些数据并且在后续发往服务器的请求中带上它们。(是一种将数据存储在客户端的方式) cookie分类: 第一方Cookie: First-Party Cookie,是指用户当前访问的网站直接…

芯知识 | WT588F02B语音芯片IC支持用户自行更换语音内容的应用优势介绍

语音芯片,作为现代电子产品中的关键组件,为各类设备提供了丰富的人机交互方式。其中,声音播放提示IC的功能日益强大,尤其是当它们支持客户通过配套下载器实现在线更换芯片内部语音内容时,这种灵活性为产品设计带来了显…

Vue中表单数据和过滤器的简单使用

收集表单数据 v-model的三个修饰符: lazy:失去焦点在收集数据 number: 输入字符串转为有效数字 trim:输入首尾空格过滤 < input type"text" v-model"person.account">则v-model收集的是value值&#xff0c;用户输入的就是value值 < input type…

分布式理论 | RPC | Spring Boot 整合 Dubbo + ZooKeeper

一、基础 分布式理论 什么是分布式系统&#xff1f; 在《分布式系统原理与范型》一书中有如下定义&#xff1a;“分布式系统是若干独立计算机的集合&#xff0c;这些计算机对于用户来说就像单个相关系统”&#xff1b; 分布式系统是由一组通过网络进行通信、为了完成共同的…