密码学--AES
一、实验目的
1、完成AES算法中1轮加密和解密操作
2、掌握AES的4个基本处理步骤
3、理解对称加密算法的“对称”思想
二、实验内容
1、题目内容描述
(1)利用C语言实现字节代换和逆向字节代换,字节查S盒代换
(2)利用C语言实现行移位和逆向行移位,字节行循环移位
(3)利用C语言实现列混合和逆向列混合,字节矩阵乘法
(4)利用C语言实现轮密钥加,异或
(5)输入文件名,读取明文文件,分组实现AES加密(一轮,分组填充时采用空格),将密文存储在cipher.txt 中。
(6)读取cipher.txt,实现AES解密(一轮)
(实现GF(28)上的乘法计算,完成一个明文分组的加解密;密钥固定为"1234567890123456")
- 关键代码的设计、实现与执行
①.首先列出S盒和逆S和的二维数组,也可以是一维的,这个可以自己去网上复制,也可以手动:
②.在S盒创建好的基础上,将明文进行分组,和希尔密码很像,在不足4*4的矩阵时进行补足,在此仍然使用的是X进行填补,关键代码如下:
if (m % msize)//补足
for (int i = 0;i<msize-m%msize;i++)
plain+='X';//用X补足
③.字节代换就是在第一步创建的S盒中查询对应的十六进制的数,做出替换就可以了,直接return(其中S[][]就是建立的S盒,n表示相关明文),而逆字节代换相同的方法进行查询,只是查询的从对象从S盒变成了逆S盒,关键代码如下:
s[n/16][n%16];
④.行位移就是在第i行整体向左移i个,而对于逆行位移就是在第i行整体向右移i个,关键代码部分如下:
for (int i=1;i<4;i++) {
int ii[4];
for (int j=0;j<4;j++)
ii[j]=matrix[i][(4+j-d*i)%4];//行位移传进去的d=-1,而逆行位移只是将参数d改为了1
for (int j=0; j<4; j++)
matrix[i][j]=ii[j];
}
⑤.列混合是用固定矩阵去左乘输入数据的每列,由于列是不止一个元素的,所以每次乘得的数要进行相加,但是在密码学中,就是将得到的数值进行异或,而同样的逆向列混合就是同样用该列去乘该固定矩阵的逆矩阵,逆矩阵在前面的实验中做过,只是将二阶矩阵换成了四阶矩阵,此处需要用到线性代数的知识,关键代码如下:
for (int i=1;i<8;i++) //有限域上的乘法部分
{
a[i]=a[i-1]<<1;
if (a[i]-255>0)
a[i]=a[i]^27;
a[i]=a[i]&0xff;
}
int z=0;
while (y!=0) {
int flag=y&(~y+1);
for (int i=0;i<8;i++)
if ((flag>>i)==1)
flag=i;
z=z^a[flag];
y=y-pow(2,flag);
}
for (int i=0; i<4;i++)//异或部分
for (int j=0;j<4;j++) a[i][j]=GMul(matrix[0][j],Col[i][0])^GMul(matrix[1][j],Col[i][1])^GMul(matrix[2][j],Col[i][2])^GMul(matrix[3][j],Col[i][3]);//将得到的数进行异或
⑥.轮密钥加密,就是将输入矩阵和密钥矩阵进行按位异或,关键代码如下:
for (int i=0;i<4;i++)
for (int j=0;j<4;j++) {
k_w[i][j]=ex_key[n*4+j]/pow(16,6-2*i);
ex_key[n*4+j]-=k_w[i][j]*pow(16,6-2*i);
}
for (int i=0;i<4;i++)
for (int j=0;j<4;j++)
matrix[i][j]=(matrix[i][j]^k_w[i][j])&0xff;
由于文件的使用操作在实验1和实验2中都由,故不做过多赘述,结果截图如下:
- 实验结果分析
根据上述结果,可以看到空格以及符号也会被算作明文的一个部分,也会占用矩阵的一个位置,并也会对它进行加密解密;而且明文不仅可以为字母也可以为汉字,在最后的解密得到的明文仍然有在明文分组时补足的X,当然也可以去掉,此处只是没有去掉补足的X,方便观察补足情况。
三、实验思考
1、实验过程总结
在实验过程中,加强了对AES加密每个环节(字节代换,行位移,列混合,轮密钥加)的理解,同时认识到了计算机处理和人工处理数据的差别;在此过程中也出现了很多问题,如最开始不知道异或操作怎么实现,经百度后发现^符号即可,其次是在列混合部分也是不知如何下手,在反复观看视频,理解深层含义并积累相关知识后得以实现。
相关文章:
密码学--AES
一、实验目的 1、完成AES算法中1轮加密和解密操作 2、掌握AES的4个基本处理步骤 3、理解对称加密算法的“对称”思想 二、实验内容 1、题目内容描述 (1)利用C语言实现字节代换和逆向字节代换,字节查S盒代换 (2)利…...
操作系统的初步了解
目录 引言:什么是操作系统? 一、设计操作系统的目的 二、操作系统是做什么的: 操作系统主要有四大核心任务: 1. 管理硬件 2. 运行软件 3. 存储数据 4. 提供用户界面 如何理解操作系统的管理呢? 1. 什么是操作…...
边缘计算:技术概念与应用详解
引言 随着物联网(IoT)、5G 和人工智能(AI)的快速发展,传统的云计算架构在处理海量数据和实时计算需求时逐渐显现出瓶颈。边缘计算(Edge Computing)作为一种新兴的计算范式,通过将计…...
C++进阶--红黑树的实现
文章目录 红黑树的实现红黑树的概念红黑树的规则红黑树的效率 红黑树的实现红黑树的结构红黑树的插入变色单旋(变色)双旋(变色) 红黑树的查找红黑树的验证 总结:结语 很高兴和大家见面,给生活加点impetus&a…...
[C++类和对象]类和对象的引入
面向过程和面向对象 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用来逐步解决问题 C是基于面向对象的,关注的是对象,将一件事情分成不同的对象,靠对象之间完成交互 类的引入 C语言结构体中只能定义变量,在C中,结构体不仅仅可以定义变量,而且可以定义函…...
YOLOv12云端GPU谷歌免费版训练模型
1.效果 2.打开 https://colab.research.google.com/?utm_sourcescs-index 3.上传代码 4.解压 !unzip /content/yolov12-main.zip -d /content/yolov12-main 5.进入yolov12-main目录 %cd /content/yolov12-main/yolov12-main 6.安装依赖库 !pip install -r requirements.…...
课程审核流程揭秘:确保内容合规与用户体验
业务流程 为什么课程审核通过才可以发布呢? 这样做为了防止课程信息有违规情况,课程信息不完善对网站用户体验也不好,课程审核不仅起到监督作用,也是 帮助教学机构规范使用平台的手段。 如果流程复杂用工作流 说明如下ÿ…...
【LangChain高级系列】LangGraph第一课
前言 我们今天直接通过一个langgraph的基础案例,来深入探索langgraph的核心概念和工作原理。 基本认识 LangGraph是一个用于构建具有LLMs的有状态、多角色应用程序的库,用于创建代理和多代理工作流。与其他LLM框架相比,它提供了以下核心优…...
ATH12K 驱动框架
ATH12K 驱动框架 ath12k驱动框架及模块交互逻辑详解1. 总体架构2. 关键数据结构2.1 核心数据结构2.2 虚拟接口数据结构3. 硬件抽象层(HAL)4. 无线管理接口(WMI)5. 主机目标通信(HTC)6. 数据路径(DP)6.1 发送路径(TX)6.2 接收路径(RX)7. 多链路操作(MLO)8. 初始化和工作流程8.1 …...
CMA认证对象?CMA评审依据,CMA认证好处
CMA认证对象 CMA(中国计量认证,China Metrology Accreditation)的认证对象主要是第三方检测机构和实验室,包括: 独立检测机构:如环境监测站、产品质量检验所、食品药品检测机构等。 企业内部实验室&#…...
依赖关系-根据依赖关系求候选码
关系模式R(U, F), U{},F是R的函数依赖集,可以将属性分为4类: L: 仅出现在依赖集F左侧的属性 R: 仅出现在依赖集F右侧的属性 LR: 在依赖集F左右侧都出现的属性 NLR: 在依赖集F左右侧都未出现的属性 结论1: 若X是L类…...
解决应用程序在JAR包中运行时无法读取类路径下文件的问题
问题情景 java应用程序在IDE运行正常,打成jar包后执行却发生异常: java.io.FileNotFoundException: class path resource [cert/sync_signer_pri_test.key] cannot be resolved to absolute file path because it does not reside in the file system:…...
第十六届蓝桥杯B组第二题
当时在考场的时候这一道题目 无论我是使用JAVA的大数(BIGTHGER)还是赛后 使用PY 都是没有运行出来 今天也是突发奇想在B站上面搜一搜 看了才知道这也是需要一定的数学思维 通过转换 设X来把运算式精简化 避免运行超时 下面则是代码 public class lanba…...
龙虎榜——20250509
上证指数今天缩量,整体跌多涨少,走势处于日线短期的高位~ 深证指数今天缩量小级别震荡,大盘股表现更好~ 2025年5月9日龙虎榜行业方向分析 一、核心行业方向 军工航天 • 代表个股:航天南湖、天箭科技、襄阳轴承。 • 驱动逻辑…...
node提示node:events:495 throw er解决方法
前言 之前开发的时候喜欢使用高版本,追求新的东西,然后回头运行一下之前的项目提示如下 项目技术栈:node egg 报错 node:events:495 throw er; // Unhandled error event ^ Error: ENOENT: no such file or directory, scandir F:\my\gi…...
OrangePi Zero 3学习笔记(Android篇)4 - eudev编译(获取libudev.so)
目录 1. Ubuntu中编译 2. NDK环境配置 3. 编译 4. 安装 这部分主要是为了得到libudev(因为原来的libudev已经不更新了),eudev的下载地址如下: https://github.com/gentoo/eudev 相应的代码最好是在Ubuntu中先编译通过&#…...
[AI ][Dify] Dify Tool 插件调试流程详解
在使用 Dify 进行插件开发时,调试是必不可少的环节。Dify 提供了远程服务调试的能力,让开发者可以快速验证插件功能和交互逻辑。本文将详细介绍如何配置环境变量进行插件调试,并成功在插件市场中加载调试状态的插件。 一、调试环境配置 在 Dify 的插件调试过程中,我们需要…...
learning ray之ray强化学习/超参调优和数据处理
之前我们掌握了Ray Core的基本编程,我们已经学会了如何使用Ray API。现在,让我们将这些知识应用到一个更实际的场景中——构建一个强化学习项目,并且利用Ray来加速它。 我们的目标是,通过Ray的任务和Actor,将一个简单…...
gpu硬件,gpu驱动,cuda,CUDA Toolkit,cudatoolkit,cudnn,nvcc概念解析
组件角色依赖关系GPU硬件无CUDA编程模型/平台需NVIDIA GPU和驱动CUDA Toolkit开发工具包(含NVCC、库等)需匹配GPU驱动和CUDA版本cuDNN深度学习加速库需CUDA ToolkitNVCCCUDA代码编译器包含在CUDA Toolkit中 GPU硬件: 硬件层面的图形处理器&…...
【C/C++】范围for循环
📘 C 范围 for 循环详解(Range-based for loop) 一、什么是范围 for 循环? 范围 for 循环(Range-based for loop) 是 C11 引入的一种简化容器/数组遍历的方式。它通过自动调用容器的 begin() 和 end() 方法…...
嵌入式开发学习(第二阶段 C语言基础)
C语言:第4天笔记 内容提要 流程控制 C语句数据的输入与输出 流程控制 C语句 定义 C程序是以函数为基础单位的。一个函数的执行部分是由若干条语句构成的。C语言都是用来完成一定操作的任务。C语句必须依赖于函数存在。 C程序结构 C语句分类 1.控制语句 作…...
大物重修之浅显知识点
第一章 质点运动学 例1 知识点公式如下: 例2 例3 例4 例5 例6 第四章 刚体的转动 例1 例2 例3 例4 例5 例6 第五章 简谐振动 例1 例2 例3 第六章 机械波 第八章 热力学基础 第九章 静电场 第十一章 恒定磁场…...
随笔-近况
好久没写了,手都生了。 我写的东西可以分为两类:技术和随笔。当然技术没有我自己创新的,都是些在解决问题过程中查询了很多资料,经过验证后,可以在项目上使用的。但是自从 deepseek 出现后,问题一下子简单…...
赤色世界 陈默传 第一章 另一个陈默
赤色世界 陈默传 第一章 另一个陈默 陈默在一片纯白的空间中缓缓睁开眼睛。没有声音,没有光影的变化,只有无尽的空白包围着他,仿佛整个世界被擦去了所有的色彩和形状。他站在那里,赤脚踩在这片空无一物的地面上,却能感…...
isp流程介绍(yuv格式阶段)
一、前言介绍 前面两章里面,已经分别讲解了在Raw和Rgb域里面,ISP的相关算法流程,从前面文章里面可以看到,在Raw和Rgb域里面,很多ISP算法操作,更像是属于sensor矫正或者说sensor标定操作。本质上来说&#x…...
关于大数据的基础知识(一)——定义特征结构要素
成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于大数据的基础知识(一&a…...
C++(1):整数常量
目录 一、进制表示 二、后缀指定类型 三、示例与注意 四、总结表 一、进制表示 十进制(Decimal) 格式:无前缀,由数字 0-9 组成。 示例:123、42。 注意:不能以 0 开头(否则会被视为八进制&a…...
C# NX二次开发:宏录制实战讲解(第一讲)
今天要讲的是关于NX软件录制宏操作的一些案例。 下面讲如何在NX软件中复制Part体的录制宏。 NXOpen.Session theSession NXOpen.Session.GetSession(); NXOpen.Part workPart theSession.Parts.Work; NXOpen.Part displayPart theSession.Parts.Display; NXOpe…...
C++:书架
【描述】 John最近买了一个书架用来存放奶牛养殖书籍,但书架很快被存满了,只剩最顶层有空余。 John共有N头奶牛(1 ≤ N ≤ 20,000),每头奶牛有自己的高度Hi(1 ≤ Hi ≤ 10,000),N头奶牛的总高度为S。书架高度为B(1 ≤ B ≤ S <…...
34.笔记1
今天,我们回顾回顾曾经的知识。 1.二分 还记得当初的二分吗? 1.一开始的二分 就像下面这个故事: 有一只老鼠,躲在10个大瓷瓶后面。你的任务就是抓住这只老鼠,但在抓的过程会导致你选择的大瓷瓶成为分子碎片。 如…...
智慧工会服务平台建设方案Word(23页)
1. 引言 随着信息技术的快速发展,传统工会服务模式面临挑战,智慧工会服务平台应运而生。该平台旨在通过数字化手段,整合工会资源,优化服务流程,提高工作效率,为会员提供更加便捷、高效、个性化的服务体验。…...
常见降维算法分析
一、常见的降维算法 LDA线性判别PCA主成分分析t-sne降维 二、降维算法原理 2.1 LDA 线性判别 原理 :LDA(Linear Discriminant Analysis)线性判别分析是一种有监督的降维方法。它的目标是找到一个投影方向,使得不同类别的数据在…...
洛谷 P1179【NOIP 2010 普及组】数字统计 —— 逐位计算
题面:P1179 [NOIP 2010 普及组] 数字统计 - 洛谷 一:题目解释: 需要求一区间内数字 2 的出现次数。注意22则记为 2 次,其它没别的... 二:思路、 思想可以考虑动态规划需要计算在每一位上数字 2 的出现次数,然后将这些…...
互联网大厂Java求职面试:基于RAG的智能问答系统设计与实现-1
互联网大厂Java求职面试:基于RAG的智能问答系统设计与实现-1 场景背景 在某互联网大厂的技术面试中,技术总监张总正在面试一位名为郑薪苦的求职者。郑薪苦虽然对技术充满热情,但回答问题时总是带着幽默感,有时甚至让人哭笑不得。…...
学习黑客5 分钟读懂什么是 CVE?
5 分钟读懂什么是 CVE? ⏱️🔐 目标读者: 安全小白 风格: ***式清晰、循序渐进 篇幅: 5 分钟速读 📖 目录 🚀 什么是 CVE?🤔 为什么要关注 CVE?🔍…...
SAM详解3.1(关于2和3的习题)
SAM SAMluogu5341SP8222SAM 推销一波前面的文章: SAM详解1 SAM详解2(初级应用) SAM详解3(SAM与AC自动机的相似性,SAM处理字符串匹配) luogu5341 题目链接 精简题意:给你一个字符串和 k k k,求 出现了 k k k 次的子串的长度 的出现次数 的最大值。 我们可以用 S…...
Java中医门诊系统源码 中医诊所系统源码
Java中医门诊系统源码 中医诊所系统源码 一、患者信息录入在中医问诊系统中,患者信息录入是第一步。系统会要求患者填写一些基本信息,如姓名、年龄、性别、职业等,以及一些关于健康状况的详细描述。这些信息将被系统自动保存,并用…...
Edwards爱德华STP泵软件用于操作和监控涡轮分子泵
Edwards爱德华STP泵软件用于操作和监控涡轮分子泵...
RabittMQ-高级特性2-应用问题
文章目录 前言延迟队列介绍ttl死信队列存在问题延迟队列插件安装延迟插件使用事务消息分发概念介绍限流非公平分发(负载均衡) 限流负载均衡RabbitMQ应用问题-幂等性保障顺序性保障介绍1顺序性保障介绍2消息积压总结 前言 延迟队列介绍 延迟队列(Delaye…...
deep seek简介和解析
deepseek大合集,百度链接:https://pan.baidu.com/s/10EqPTg0dTat1UT6I-OlFtg?pwdw896 提取码:w896 一篇文章带你全面了解deep seek 目录 一、deep seek是什么 DeepSeek-R1开源推理模型,具有以下特点: 技术优势: 市场定位&…...
Webug4.0靶场通关笔记24- 第29关Webshell爆破
目录 一、Webshell爆破原理分析 二、第29关webshell爆破渗透实战 1.环境搭建 2.打开靶场 3.暴力破解 (1)bp开启抓包模式 (2)输入密码12并抓包 (3)配置position (4)配置payl…...
Linux系统入门第十一章 --Shell编程之函数与数组
一、Shell函数 1、函数的用法 Shell函数可用于存放一系列的指令。在Shell脚本执行的过程中,函数被置于内存中,每次调用函数时不需要从硬盘读取,因此运行的速度比较快。在Shell编程中函数并非是必须的元素,但使用函数可以对程序进…...
【文件系统—散列结构文件】
文章目录 一、实验目的实验内容设计思路 三、实验代码实现四、总结 一、实验目的 理解linux文件系统的内部技术,掌握linux与文件有关的系统调用命令,并在此基础上建立面向随机检索的散列结构文件;## 二、实验内容与设计思想 实验内容 1.设…...
软件系统中功能模型 vs 数据模型 对比解析
功能模型 vs 数据模型 对比解析 一、功能模型(Functional Model) 定义:描述系统 做什么(业务逻辑与操作流程) 核心关注:行为、交互、业务流程 建模工具: 用例图(UML Use Case Dia…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(17):「 」と言いました
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(17):「 」と言いました 1、前言(1)情况说明(2)工程师的信仰 2、知识点(1)复习(2)「…...
qiankun微前端任意位置子应用
qiankun微前端任意位置子应用 主项目1、安装qiankun2、引入注册3、路由创建4、路由守卫 二、子项目1、安装sh-winter/vite-plugin-qiankun2、main.js配置3、vite.config.js配置 三、问题解决 主项目 1、安装qiankun npm i qiankun -S2、引入注册 创建存放子应用页面 //whpv…...
普通IT的股票交易成长史--20250509晚复盘
声明: 本文章的内容只是自己学习的总结,不构成投资建议。价格行为理论学习可参考简介中的几位,感谢他们的无私奉献。 送给自己的话: 仓位就是生命,绝对不能满仓!!!!&…...
切比雪夫不等式专题习题
切比雪夫不等式专题习题 前言 本文为概率论习题集专栏的切比雪夫不等式专题习题,共设计10道由浅入深的习题,涵盖基本概念、计算应用、理论证明与实际场景应用。建议先独立完成后再参考解析篇。 一、基础概念题 习题1: 判断题(…...
JAVA包装类
一、基本数据类型 1.整型类型: 用于表示整数数值,不包含小数部分。 类型位数取值范围默认值示例byte8-128 至 1270byte num 100;short16-32,768 至 32,7670short num 5000;int32-2,147,483,648 至 2,147,483,6470int num 100000;long64-2^63 至 2^…...
[特征工程]机器学习-part2
1 特征工程概念 特征工程:就是对特征进行相关的处理 一般使用pandas来进行数据清洗和数据处理、使用sklearn来进行特征工程 特征工程是将任意数据(如文本或图像)转换为可用于机器学习的数字特征,比如:字典特征提取(特征离散化)、文本特征提取、图像特征提取。 特征工程步骤…...