本科实验报告

课程名称:信息与通信安全姓 名:邓敏 实 验:实验一系:信电系专 业:信息与通信工程学 号:3110100978指导教师:谢磊

年 月 日

AES 与基于AES 的CMAC

实验目的

1、熟悉AES加解密过程,掌握其算法实现;

2、熟悉CMAC生成过程,掌握其算法实现。

实验任务

1、复习AES 原理;

2、用C/C++ 编写AES 算法并调试通过;

3、复习CMAC 原理;

4、在实现 AES 基础上,用C/C++ 编写CMAC 算法并调试通过。

实验原理

1.AES原理

AES加解密过程如下图所示,明文分组的长度为128位即16字节,秘钥长度可以为16,24或32字节(128,182或256位)。根据秘钥的长度,算法被称为AES-128、AES-192、或AES-256,本次实验采用AES-128。

1.1AES加密过程

k0k4k8k12k1k5k9k13k2k6k10k14k3k7k11k15AES明文输入为一个128位分组,在代码实现中被描述为4x4的字节方阵,一般称其为state数组,并且按照如下方式填入到数组当中,原始密钥也为128为分组,并按同样的方式填入数组。

in0in4in8in12in1in5in9in13in2in6in10in14in3in7in11in15AES加密过程共进行十轮,前九轮由四个步骤组成,四个步骤依次为字节代替(SubBytes),行移位(ShiftRows),列混淆(MixColumns),轮密钥加(AddRoundKey),第十轮依次进行除列混淆的三个步骤。

1.1.1字节代替

AES定义了一个S盒,它是由16x16个字节组成的矩阵,包含了8位所能表示的256个数的一个置换,字节代替将输入字节的高四位作为行值,低四位作为列值,以这些行列值作为索引从S盒的对应位置取出元素作为输入。

1.1.2行移位变换

行移位变换完成基于行的循环移位操作,state的第0行不动,第1行循环左移1个字节,第2行循环左移2个字节,第3行循环左移3个字节。

1.1.3列混淆

列混淆变换的正向列混淆变换对每列独立地进行操作。每列中的每个字节被映射为一个新值,此值由该列中的四个字节通过函数变换得到,这个变换可由下面基于state的矩阵乘法表示。

状态中单列的列混淆变换可表示为

1.1.4轮密钥加

轮密钥加变换用于将输入或中间态S的每一列与一个密钥字W[i]进行按位异或,其中, W[i]由原始密钥通过密钥扩展算法产生。

1.2AES解密过程

AES解密过程为加密过程的逆,同为十轮,四个步骤按一定顺序执行,四个步骤分别为逆向字节替代(InvSubBytes),逆向行移位(InvShiftRows),逆向列混淆(InvMixColumns),轮密钥加(AddRoundKey),其中轮密钥加与加密过程中的步骤相同。

1.2.1逆向字节替代

AES定义了一个逆S盒,其替代方法与加密过程相同

1.2.2逆向行移位

逆向行移位与行移位变换相反,逆行移位变换将态State的后三行按相反的方向进行移位操作,即第0行保持不变,第1行向右移1个字节,第2行向右移2个字节,第3行向右移3个字节。

1.2.2逆向列混淆

逆列混淆变换的处理方法与列混淆变换类似,每一列都通过与一个固定的多项相乘进行变换。 写为矩阵乘法的形式,逆列混淆变换按以下方式对列进行变换:

1.3AES秘钥扩展

AES加密解密过程中,每一轮都需要一个与输入分组具有相同长度的扩展密钥W[i]的参与。由于外部输入的加密密钥长度有限,所以在算法中要用一个密钥扩展程序把外部密钥扩展成更长的比特串,以生成各轮的加密和解密密钥。其一轮过程如下图所示,一共需要进行十次,由原密钥扩展出10个密钥,分别用于每轮加解密。

其中g函数为行移位,自己替代以及与轮常量异或。

CMAC原理

CMAC为基于密码的消息认证码,生成认证码的过程课分为两种。

首先,当消息长度是分组长度b的n倍时,在此我们选择b=128,可将消息换分为n组(M1,M2.......Mn)。算法使用了k位的加密密钥K和n位的常数K1.对于AES,密钥长度k为128、192或256位,在此我们选择128位,CMAC按如下方式计算

其中,T为消息认证码,也成为tag;Tlen是T的位长度,是位串的X最左边的s位。

如果消息不是密文分组长度的整数倍时,则最后分组的右边(低有效位)填充一个1和若干0使

aes128 cmac java_AES-与基于AES-的CMAC.doc相关推荐

  1. aes解密流程图_基于AES和混沌的图像加密方法与流程

    本发明涉及一种信息加密技术,特别是涉及一种图像加密方法. 背景技术: 在军事系统.电子政务.金融系统以及日常生活等领域,每天都会产生大量的图像.为保护这些图像信息内容不被窃取,图像加密技术引起了学术界 ...

  2. QT 基于AES加解密的使用,解析java端发来的密文

    背景 java端往ukey中写授权信息,C++端从ukey中读取授权信息. java端写入的授权信息是加密的,并且要可逆. 因为java端采用的是AES加密的,所以我(C++端)也只好采用对等形式搞定 ...

  3. 利用Python爬取基于AES对称加密算法的网易云音乐用户评论数据

    本文利用Python2.7根据网易云音乐歌曲ID爬取了该歌曲的所有用户评论数据.以id是28875120的歌曲<小岁月太着急>为示例,通过Chrome的DevTools工具获取已加密评论数 ...

  4. python中的doc_基于Python获取docx/doc文件内容代码解析

    这篇文章主要介绍了基于Python获取docx/doc文件内容代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 整体思路: 下载文件并修改后缀 ...

  5. java web聊天室论文_基于javaweb聊天室.doc

    基于javaweb聊天室.doc 南嗦岌凌*4 文(设计) 本科生毕业论 题 目:基于Java网页版聊天室的设计与实现 姓名:陈义旺 学院:理学院 专业:信息与计算科学 班级:信科092 学号: 指导 ...

  6. 单缝衍射matlab,基于matlab的单缝衍射.doc

    基于matlab的单缝衍射.doc 0本科毕业论文设计题目基于MATLAB的单缝衍射和双缝干涉可视化模拟学生姓名学号系别物理学与电子信息工程系年级08级专业物理学指导教师职称完成日期1闽江学院毕业论文 ...

  7. 基于matlab实现信号的低通滤波器,基于matlab的低通滤波器.doc

    基于matlab的低通滤波器.doc 第-1-页共10页基于matlab的低通滤波器摘要:调用MATLAB信号处理工具箱中滤波通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念.应用最广 ...

  8. cmac神经网络 matlab,基于CMAC 神经网络的PID 控制.pdf

    基于CMAC 神经网络的PID 控制 基于 CMAC 神经网络的 PID 控制 PID Control System Based on CMAC Neural Network 洪云飞 陈孚 付兴武 H ...

  9. 【AES图像加解密】基于AES图像加解密算法的MATLAB仿真

    1.软件版本 matlab2013b 2.本算法理论知识 算法的基本流程如下所示: SubBytes S-Box ShiftRows Mix Columns AddRoundKey 3.核心代码 fu ...

  10. 基于AES加解密的图像加解密算法

    1.问题描述: 2.部分程序: 算法的基本流程如下所示: 3.仿真结论: AES加密如下所示: AES解密如下所示:   A29-01

最新文章

  1. 【11分钟训练完ImageNet】DNN训练再破纪录,1024 CPU Caffe开源
  2. 亿万级图数据库 Nebula Graph 的数据模型和系统架构设计
  3. JavaWeb总结(四)—JSP深入解析
  4. Vue通过eventBut实现组件全局通信
  5. 跟着 Github 学习 Restful HTTP API 的优雅设计
  6. Fabric--启动网络手动
  7. PHP7开启opcache打造强悍性能
  8. Javascript的原型链图
  9. C++泛型编程实现平衡二叉搜索树AVL
  10. Spring Boot + Spring Cloud 构建微服务系统(三):服务消费和负载(Feign)
  11. HTML Email 编写指南
  12. SilverLight学习
  13. 路由器自适应算法OSPF和RIP协议(通俗理解)
  14. python属于哪种类型_下列哪种类型是Python的列表类型?
  15. 没有什么秘密的学习方法
  16. 如何通过二极管设计一个与门电路
  17. .NET应用程序 全局RGB效果(VB.NET示例)
  18. Araxis Merge对比软件工具
  19. python 函数式编程及递归
  20. ker矩阵是什么意思_重做第一次作业(矩阵)

热门文章

  1. RSA密钥生成、加密解密、数据签名验签
  2. android mtbf测试,Android Crash 问题分析以及解决
  3. 松下A5伺服器调试软件
  4. C++中迭代和递归的区别
  5. win7映射Nextcloud私有网盘为本地驱动器
  6. 【自动化】企业自动化改造,怎么做?
  7. Elasticsearch从入门到放弃:分词器初印象
  8. OpenCV系列之图像去噪 | 五十八
  9. Mac 如何写银行管理系统
  10. c4d怎么导入fbx_c4d场景中怎么导入其他模型