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

article/2025/10/11 3:19:32

目 录
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://chatgpt.dhexx.cn/article/XWxvGwoX.shtml

相关文章

加解密算法

总结 推荐使用的算法&#xff1a; 对称加密算法&#xff1a;AES-GCM-256&#xff0c;SM1 (硬件国密), SM4 (国密)非对称加密算法&#xff1a;RSA2048&#xff0c;SM2 (国密)信息摘要算法&#xff1a;SHA256&#xff0c;SM3 (国密散列算法) 对称加密算法/AES-GCM-256: GCMGM…

加密解密及算法详解

1、简介 今天我要给大家分享的是互联网通信中用到的各种加密解密算法&#xff0c;在我们介绍加解密知识前&#xff0c;首先我们了解一下密码学、密码、加密、数字签名、密钥交换等相关术语的含义。 1.1 密码学 密码学是研究编制密码和破译密码的技术科学。研究密码变化的客观规…

常见的加密解密算法

文章目录 一、概述二、区别 一、概述 加密分为单向加密和双向加密&#xff1a; 单向加密 又称为不可逆加密&#xff0c;即生成密文无法反解的一种加密方式&#xff1b;eg:MD5和SHA系列、HMAC。 双向加密 又称为可逆加密&#xff0c;即生成密文后&#xff0c;在需要的时候可以反…

RSA 加密解密算法实现(简单,易懂)!!!

目录 一、什么是RSA算法 1.对称加密 2.非对称加密 3.非对称加密的应用 二、RSA算法的基础操作步骤 1.生成公钥和私钥 2.用公钥加密信息 3.用私钥解密信息 三、AC代码 六、RSA算法的测试 七、共勉 一、什么是RSA算法 在计算机中常用的加密算法分为两类&#xff1a;对称…

13种加密与解密算法【一】

这15种加密解密算法分别是&#xff1a;散列哈希[MD5、SHA1、CRC32]&#xff0c;对称[DES&#xff0c;3DES&#xff08;TDEA、Triple DES&#xff09;&#xff0c;AES、&#xff0c;Blowfish&#xff0c;RC4、RC5&#xff0c;IDEA]&#xff0c;Base64、Rabbit、Escape。【三种分…

【2021最新版】Linux面试题总结(48道题含答案解析)

文章目录 1、绝对路径用什么符号表示&#xff1f;当前目录、上层目录用什么表示&#xff1f;主目录用什么表示? 切换目录用什么命令&#xff1f;2、怎么查看当前进程&#xff1f;怎么执行退出&#xff1f;怎么查看当前路径&#xff1f;3、怎么清屏&#xff1f;怎么退出当前命令…

linux操作系统期末考试题库

别光看点个赞呗 文档完整下载链接&#xff1a; w​​​​​​​w​​​​​​​https://download.csdn.net/download/weixin_59241300/87299684 1. cal命令 2.cat命令 3.cd命令 4.date命令 5.echo命令 6.grep命令 7.head 命令 8.ls 命令 9.touch 命令 10.more命令 …

Linux上机考试试题

Linux基础机考测试题 1、如果忘记登录密码&#xff0c;如何破解超级用户root的密码&#xff0c;并将密码改为redhat。&#xff08;操作过程抓图体现&#xff09; 开机在出现grub画面&#xff0c;按e键 用上下键选中第二项(类似于kernel /boot/vmlinuz-2.4.18-14 ro rootLABEL…

linux考试题库

&#xff08;Linux&#xff09;是一个自由、免费、开放的系统软件&#xff0c;支持多种硬件平台&#xff0c;多用户、多任务特点。 Linux操作系统是&#xff08;Linus Torvalds&#xff09;第一个开发的。 下列中&#xff08;单用户&#xff09;不是Linux的特点。 Linux一般…

Linux期末考试题库(超全)

文章目录 Linux期末考试题库选择题填空题简答题操作题 Linux期末考试题库 选择题 在创建Linux分区时&#xff0c;一定要创建&#xff08; D &#xff09;两个分区 A. FAT/NTFS  B. FAT/SWAP  C. NTFS/SWAP  D.SWAP/根分区 在Red Hat Linux 9 中&#xff0c;系统默…

虚拟机镜像文件高速下载方法之一

虚拟机镜像文件高速下载方法之一&#xff08;外加镜像文件合集打包&#xff09; 1.打开网址网易开源镜像站 2.打开对应文件夹&#xff08;比如下载kali镜像文件&#xff09; &#xff08;1&#xff09;点击 kali-images/ &#xff08;2&#xff09;点击自己需要的版本(此处我…

添加虚拟机镜像centso 8的步骤

此篇文章仅介绍添加虚拟机镜像的步骤&#xff0c;特别说明这里以centso 8为例 如有需要安装VMware虚拟机&#xff0c;可以通过以下链接跳转至对应文章 VMware虚拟机安装配置及虚拟机网络模式说明https://blog.csdn.net/weixin_55883492/article/details/123790174?spm1001.2…

vmware 虚拟机恢复ghost镜像文件

一、下载winPE.iso、软碟通 链接&#xff1a;https://pan.baidu.com/s/1Ty2td8_9-3Dr7Qc5XHhyNw 提取码&#xff1a;wtuk 二、恢复&#xff1a; 1、配置基础Vmware系统模板&#xff0c;如何配置可百度搜索 注意&#xff1a;内存必须为2G以上,否则无法使用PE 2、CD/DVD — …

macOS Monterey 12.3 (21E230) 虚拟机 IOS 镜像

macOS Monterey 12.3&#xff08;内部版本号 21E230&#xff09;&#xff0c;这是一个重大更新&#xff0c;引入了通用控制&#xff0c;这项功能可以支持一个键盘或者鼠标同时控制多台 Mac 电脑或者 iPad。另外根据用户反馈&#xff0c;此次更新也对 AMD 6000 系显卡进行了优化…

虚拟机的镜像安装

虚拟机镜像的安装 (1)下载好虚拟机iso镜像安装包 (2)命令virt-manager 打开虚拟机管理器 点击左上角创建新虚拟机按钮 (3)选择"Local install media"这个选项 --> Forward (4)点击Browse…按钮 (5)Browse Local–>找到rhel-server-7.3-x86_64-dvd.iso 镜像…

KVM详解(五)——KVM虚拟机镜像格式

今天继续给大家介绍Linux运维相关知识&#xff0c;本文主要内容是KVM虚拟机镜像格式。 一、虚拟机常用镜像格式介绍 目前&#xff0c;虚拟机的主流镜像格式有raw、cow、qcow、qcow2以及vmdk&#xff0c;下面&#xff0c;我就详细介绍一下这些主流的虚拟机镜像格式。 &#x…

虚拟机下载-下载windows镜像

虚拟机—官方镜像下载—windows镜像 访问微软官网: win10: https://www.microsoft.com/zh-cn/software-download/windows10 win7: https://www.microsoft.com/zh-cn/software-download/windows11 点击立即下载工具进行下载[windows] 下载 以后-双击—安装程序 点击 [下一步] 协…

如何下载虚拟机和下载kali虚拟机镜像

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 官网下载(Player版本免费)kali虚拟机镜像下载 官网下载(Player版本免费) VMware Workstation Player是免费版本 1.进入官网 2.选择大版本 3.下载 kali虚拟机镜…

Virtualbox加载虚拟机镜像

启动虚拟机 打开这个文件夹 双击蓝色图标 会自动开启virtualbox虚拟机,并加载当前镜像 必须保证当前镜像文件所在全部路径都没有中文 建议启动Virtualbox时使用单击右键->管理员方式运行 配置镜像参数 选中镜像,点击设置 修改usb设置 修改网络设置 桥接的网卡必须是具…

使用虚拟机镜像文件导入部署openGauss

实验项目名称 实验1 使用虚拟机镜像文件导入部署openGauss 一、实验目的&#xff1a; 将现有的VirtualboxcentosopenGauss镜像文件导入虚拟机&#xff0c;并启动使用openGauss数据库。本实验中使用的镜像文件名为&#xff1a;centos_openGauss.ova。 二、实验内容及过程、结…