AES加密解密算法设计(C++)

news/2024/5/20 21:21:06/文章来源:https://blog.csdn.net/sheziqiong/article/details/127423225

目 录
1. 背景与意义 4
2. 系统设计 5
2.1系统主要目标 5
2.2主要软件需求(运行环境) 5
2.3功能模块与系统结构 6
3 系统功能程序设计 8
3.1基本要求部分 8
3.1.1 字节替换 8
3.1.2行移位 9
3.1.3列混合 11
3.1.4密钥加 13
3.1.5密钥扩展 14
3.1.6获取RoundKey 16
3.1.7逆字节替换 17
3.1.8逆行移位 17
3.1.9逆列混合 19
3.1.10加密 20
3.1.11解密 23
4. 测试报告 26
5.结论 29
参考文献 30
2.系统设计
先定义后面s盒变换和密钥扩展要用到的s盒数组和rcon数组,然后定义s盒查找函数,行移位,列混合函数,因为这几个函数无论是在10轮还是12轮还是14轮执行时都没变化。然后就是12轮的轮密钥加和密钥扩展。这一步也许有点困难,接着就是12轮的加密函数本身。然后才是10轮的轮米要加和密钥扩展,加密函数。最后是解密要用到的逆字节替代,逆行移位,逆列混合,轮密钥加和密钥扩展函数和加密是一样的,所以不用重新定义。
2.1系统主要目标
基本要求部分:
1.完成一个明文分组的加解密,明文和密钥是十六进制,长度都为128比特(32个16进制数),按照标准输入明文和密钥,输出密文,进行加密后,能够进行正确的解密。
2.程序运行时,本文转载自http://www.biyezuopin.vip/onews.asp?id=13048要求输出每一轮使用的密钥,以及每一轮中字节替代、行移位、列混合和密钥加等每一步操作之后的16进制表示的值。
3. 提供运行标准示例的选项。
4. 能够在文件读取密钥明文。
5. 程序有良好的人机交互操作。
2.2主要软件需求(运行环境)
本软件适用VC语言编写,编译成功后的EXE文件可以在装有windows系统的任何计算机上使用。
测试平台:Windows XP Professional
使用软件:Visual C++ 6.0

2.3功能模块与系统结构
主函数:
xAESencrypt();128比特加密
xAESencrypt6(); 12轮加密
xAESdencrypt();128比特解密
show();演示
void SB() //从文件读取192比特密钥和明文
void SA()//从文件读取128比特密钥
void subbyte(int col[4][4]) //字节替代
void shiftrows(int col[4][4]) //行移位
void mixcolumn(int col[4][4]) //列混合
void addroundkey6(int col[4][4],int allkey[4][52],int nr) //192比特轮密钥加
void addroundkey(int col[4][4],int allkey[4][44],int nr) //128论密钥加
void keyschedule6(int key[4][6],int allkey[4][52],int nk,int nr) //192密钥扩展
void keyschedule(int key[4][4],int allkey[4][44],int nk,int nr) //128密钥扩展
void invsubbyte(int col[4][4]) //逆字节替代
void invshiftrows(int col[4][4]) //逆行移位
void invmixcolumn(int col[4][4]) //逆列混合
总体流程图:
在这里插入图片描述

void xAESdencrypt()
{system("cls");int allkey[4][44];int nr=10,nk=4;int asd[4][4];int key[4][4];printf("\n请输入解密密钥:16进制(128比特)\n");for(int o=0;o<4;o++)for(int p=0;p<4;p++){scanf("%x",&key[p][o]);}printf("\n请输入要解密的字符:16进制(128比特)\n");for(int w=0;w<4;w++)for(int v=0;v<4;v++){scanf("%x",&asd[v][w]);}printf("您输入的密钥为:");for(int a=0;a<4;a++)for(int b=0;b<4;b++){printf("  %x",key[b][a]);}printf("\n");printf("您输入的密文为:");for(int c=0;c<4;c++)for(int d=0;d<4;d++){printf("  %x",asd[d][c]);}printf("\n");keyschedule(key,allkey,nk,nr);printf("\n\n轮子密钥加结果为:");addroundkey(asd,allkey,nr);printf("\n");for(int x=9;x>=1;x--){printf("第%d逆字节替代结果:\n",10-x); invsubbyte(asd);printf("第%d逆行移位结果:\n",10-x); invshiftrows(asd); printf("第%d逆轮密钥加位结果:\n",10-x); addroundkey(asd,allkey,x);printf("第%d逆列混合结果:\n",10-x); invmixcolumn(asd);}printf("第10逆字节替代结果:\n");invsubbyte(asd);printf("第10逆行移位结果:\n");invshiftrows(asd);printf("第10逆轮密钥加位结果:\n");addroundkey(asd,allkey,0);printf("\n\n解密结果为:");for(int i=0;i<4;i++)for(int j=0;j<4;j++){printf("  %x",asd[j][i]);}printf("\n");printf("\n\n请按数字键“0”返回主菜单!(“enter”键确定)\n");
}

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

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

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

相关文章

神经网络训练多少次合适,神经网络训练时间多长

1、tensorflow 训练一个神经网络 需要多长时间 基本使用 使用 TensorFlow, 你必须明白 TensorFlow: 使用图 (graph) 来表示计算任务. 在被称之为 会话 (Session) 的上下文 (context) 中执行图. 使用 tensor 表示数据. 通过 变量 (Variable) 维护状态. 使用 feed 和 fetch 可以…

【附源码】计算机毕业设计SSM实验室设备明细管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【自监督论文阅读笔记】Simmim: A simple framework formasked image modeling

本文介绍了 SimMIM&#xff0c;这是一个用于 掩码图像建模 的简单框架。本文简化了最近提出的相关方法&#xff0c;无需特殊设计&#xff0c;例如通过离散 VAE 或聚类 进行 block-wise 分块级的掩码 和 tokenization。为了研究 是什么让掩码图像建模任务学习良好的表示&#xf…

nginx----(1)nginx的单机安装

文章目录Nginx卸载开源版Nginx安装默认简单安装Nginx的源码复杂安装防火墙问题nginx启停安装成系统服务Nginx卸载 步骤一&#xff1a;需要将nginx的进程关闭 ./nginx -s stop步骤二:将安装的nginx进行删除 rm -rf /usr/local/nginx步骤三:将安装包之前编译的环境清除掉 mak…

opc client 客户端软件测试工具

一、概述&#xff1a; 本软件一款OPC客户端测试工具&#xff0c;使用本软件连接到OPC server服务端&#xff0c;获取server数据&#xff0c;简单好上手&#xff0c;软件也很小巧&#xff0c;操作便利&#xff0c;也是绿色软件&#xff0c;免安装。 二、软件基础环境保证&#x…

期货交易结算信息(期货结算系统)

期货中的结算价是怎么计算出来的&#xff1f; 最近常有新手投资者问&#xff1a;为什么期货账户收盘时年持仓是盈利的&#xff0c;怎么当天结算单上却是亏损的&#xff1f; 之所以会有这个疑问&#xff0c;是因为投资者没有明白期货收盘价、结算价、成交价三者之间的关系。今天…

dockerfile编写构建镜像

文章目录一、dockerfile1、什么是dockerfile2、原理二、docker镜像的创建1、创建镜像的三种方法①基于已有镜像创建②基于本地模板创建③基于dockerfile创建三、镜像分层的原理1、docker镜像结构的分层2、bootfs内核空间3、rootfs内核空间4、AUFS与overlay/overlay2overlay结构…

【ViT 微调时关于position embedding如何插值(interpolate)的详解】

目录1. 问题描述2. positional embedding如何interpolate3. 输入的sequence length改变了ViT还能正常前向推断&#xff1f;本文适合对Vision Transformer有一定了解&#xff08;知道内部结构和一些实现细节&#xff0c;最好是精读过ViT这篇论文&#xff09;的读者阅读&#xff…

八种可以简单判断否属于过敏体质的表现,符合四条就是了

最早感知春天的不是鸭子&#xff0c;而是过敏的人&#xff0c;最近门诊荨麻疹的人数逐渐增多。近20年来&#xff0c;随着过敏性鼻炎、湿疹、荨麻疹和哮喘的发病率越来越高&#xff0c;过敏体质开始越来越出名。在西医中&#xff0c;容易患上这种过敏性疾病的人被称为过敏体质。…

JVM(九) —— 运行时数据区之堆的详细介绍(四)

JVM&#xff08;九&#xff09;—— 运行时数据区之堆的详细介绍&#xff08;四&#xff09;TLAB堆空间常用的参数设置HandlePromotionFailure逃逸分析和栈上分配代码优化栈上分配同步省略分离对象或标量替换TLAB 堆区是线程共享区域&#xff0c;任何线程都乐意访问到堆区的共…

智能钢琴-第12届蓝桥杯Scratch省赛1真题第4题

[导读]&#xff1a;超平老师计划推出Scratch蓝桥杯真题解析100讲&#xff0c;这是超平老师解读Scratch蓝桥真题系列的第52讲。 第12届蓝桥杯青少年组省赛分两次进行&#xff0c;这是2020年10月19日举行的第一次省赛考试初级组&#xff0c;形式为在线考试。Scratch分为初级组和…

java实验报告3:数组和字符串案例练习

目录 内容 利用随机1~9整数生成3*3的二维数组&#xff0c;使二维数组每行&#xff0c;每列、以及斜线上的数字之和均为15&#xff0c;并输出这个二维数组 按自然数从小到大的标准为顺序&#xff0c;对以下数组求其逆序数&#xff0c;并列出逆序对&#xff1a; 实验小结 一、…

眼科考研院校排名及考研难度分析

眼科考研院校排名及考研难度分析 文章目录眼科考研院校排名及考研难度分析基础信息专业介绍学科范围和课程眼科学专业研究方向考研分析学校排名分数线学校推荐就业方向学习材料参考链接基础信息 专业介绍 眼科学&#xff08;学科代码&#xff1a;100212&#xff09;是临床医学…

Aptos 域名服务 (ANS) 上线主网

我们很高兴正式推出 Aptos 名称服务 (ANS)。我们正在通过使用 Aptos 构建一流的区块链体验来铺平道路&#xff0c;这就是我们在第一天推出域名服务的原因。 ANS 现在允许所有 Aptos 用户使用人类可读的 .apt 域名作为他们的 Aptos 钱包地址&#xff0c;而不是他们的公钥。 我们…

美化mac系统自带的Terminal.app工具

命令行工具对于开发人员来说,使用还是比较频繁的,但是mac自带Terminal.app工具的样式和功能实在一言难尽. 默认的样式 美化后的样式 下面为大家介绍如何操作. 我们使用的是oh-my-zsh 项目地址 我喜欢自己去安装, 不使用自动化脚本, 这样可以记录修改了哪些文件, 安装的文件…

黑盒测试-场景法

黑盒测试-场景法 1.场景法 1.1简介 1.简介&#xff1a;软件系统要想获得用户的认可&#xff0c;必须站在用户的角度&#xff0c; 以用户的使用逻辑及操作习惯为出发点&#xff0c;设计测试用例时 考虑用户使用软件的流程。然后&#xff0c;依据这些流程设计用例 设计才能更贴…

Day09-尚品汇-购物车静态组件与修改

一&#xff1a;把购物车成功页面的两个按钮完善一下&#xff08;第一个&#xff09; 1.在AddCartSuccess组件里面&#xff1a; 1.的后续 1》点这个 2》跳转会购物车的页面 二&#xff1a;把购物车成功页面的两个按钮完善一下&#xff08;第二个&#xff09; 1.先在文档里面找到…

供应氨基-PEG-多巴胺,NH2-PEG-Dopamine,Amine-PEG-DOPA

1&#xff1a;描述 NH2-PEG-Dopamine&#xff0c;Amine-PEG-DOPA&#xff08;氨基-聚乙二醇-多巴胺&#xff09;&#xff0c;试剂所属分类为Amine PEG Dopamine PEG&#xff0c;质量控制为95%&#xff0c;该试剂应于 -20℃长期保存&#xff0c;暗黑&#xff0c;干燥处保存。 …

论文笔记:Pre-training to Match for Unified Low-shot Relation Extraction

论文来源&#xff1a;ACL 2022 论文地址&#xff1a;https://aclanthology.org/2022.acl-long.397.pdf 论文代码&#xff1a;https://github.com/fc-liu/MCMN 目录 Abstract Introduction Multi-Choice Matching Networks Multi-choice Prompt Instance Encoder Multi…

winform会所管理系统VS开发sqlserver数据库cs结构c#编程源码网页

一、源码特点 winform 会所管理系统 是一套完善的桌面程序设计管理系统&#xff0c;系统具有完整的代码数据库&#xff0c;系统主要采用C/S模式开发。 应用技术&#xff1a;winform c#sqlserver 开发工具&#xff1a;vs2010 sqlserver winform会所管理系统VS开发sqlser…