AES中加法、乘法、xtime运算详述

注意:文中数字均为2进制或16进制,不要与10进制混淆。
AES中的运算为面向字节的运算,有加法和乘法两种。
AES中的运算包含面向字节(8位)或4字节(双字,32位)运算,本文只介绍面向字节(8位)。

1.加法

加法可以理解为对应位的异或运算,如:
57⊕83 ---------------------------16进制
=01010111⊕10000011-------2进制

异或运算具体步骤(对应位相同则为0,不相同则为1)
0 1 0 1 0 1 1 1
1 0 0 0 0 0 1 1
————————
1 1 0 1 0 1 0 0

=11010100-----------------------2进制
=D4---------------------------------16进制

2.乘法

乘法类似多项式乘法,再结合类似mod m(x)方式计算。
之所以说类似,是因为运用多项式乘法后,需要消去系数为偶数的项,系数为奇数的项则将系数设置为1。因为2进制计算,系数只能为0和1。mod m(x)同样不是一般的除法取余,而是要使用异或运算。
m(x)=x8+x4+x3+x+1
至于为什么是这个表达式,我也不清楚,希望有数学大咖解释一下~
具体步骤可以参考下列例题:

3.xtime

3.1 xtime推导

xtime()算法可用于面向字节的乘法运算,在程序开发中应用广泛,各种语言的实现代码在网上都可以查到,就不再赘述。仅在此详述算法的推导以及笔算解题时的使用方法。
根据定义,xtime()运算是最高项指数不大于7的多项式b(x)乘以多项式x的乘法运算。
因为是面向字符的运算,根据上述乘法原理,可以推出下列bi(i=0,1,…7)为0或1。
即:
b(x)=b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0
xtime(b(x))=x·b(x)=(b7x8+b6x7+b5x6+b4x5+b3x4+b2x3+b1x2+b0x )mod m(x)
=(b7x8+b6x7+b5x6+b4x5+b3x4+b2x3+b1x2+b0x )mod (x8+x4+x3+x+1)
接下来要分类讨论,当b7=0

当b7=1

3.2 xtime应用

根据面向字节运算的定义,多项式x就是仅有一项且最该项指数为1的多形式,可以理解为00000010(2进制)或02(16进制)。
xtime(b(x))=b(x)·x=b(x)·00000010=b(x)·02
也就是说,xtime()可以用于计算字节与02(00000010)的乘法。
根据公式,当b7=0,xtime()就是将字节左移一位,末位补0;
当b7=1,xtime()就是将字节左移一位,末位补0,再与1B(00011011)异或。

3.3 xtime计算举例

以下均为2进制或16进制,计算过程中应用交换律与结合律。
57·01=57=01010111
57·02=xtime(57)=xtime(01010111)=10101110=AE---------------------------------------------(b7=0,左移一位,末位补0)
57·03=57·(01+02)=57⊕xtime(57)=01010111⊕10101110=11111001=F9
57·04=57·02·02=AE·02=xtime(AE)=xtime(10101110)=01000111=47---------------------(b7=1,左移一位,末位补0,异或1B)
57·08=57·04·02=47·02=xtime(47)=xtime(01000111)=10001110=8E----------------------(b7=0,左移一位,末位补0)
57·10=57·08·02=8E·02=xtime(8E)=xtime(10001110)=00000111=07----------------------(b7=1,左移一位,末位补0,异或1B)
所以
57·13
=57·(10+02+01)
=57·10⊕57·02⊕57·01
=00000111⊕10101110⊕01010111
=11111110
=FE

4.参考文献

施游,朱小平.信息安全工程师5天修炼.中国水利水电出版社

1.该文仅供学习参考,请勿转载;
2.文中若有侵权,请评论或私信指出;
3.如有错误或表述不当,欢迎批评指正。

AES中加法、乘法、xtime运算详述相关推荐

  1. c语言计算1减2的平方分之一,在数学中必须考虑的运算有两类;加法运算与减法运算-数学位于运算-数学-沙人磕同学...

    概述:本道作业题是沙人磕同学的课后练习,分享的知识点是数学位于运算,指导老师为江老师,涉及到的知识点涵盖:在数学中必须考虑的运算有两类;加法运算与减法运算_-数学位于运算-数学,下面是沙人磕作业题的详 ...

  2. 计算机用加法乘法实现除法运算的数学原理

    数学原理:迭代序列 本篇只讨论加法乘法实现除法的数学原理,并不涉及数据结构. 设已知  c > 0 ,任取     数学归纳法我们有       0 < <1  ,  0 <  ...

  3. 手动推导计算AES中的s盒的输出

    手动推导计算AES中的s盒的输出 初衷 为了解决一道密码学课后作业: 在AES中,对于字节 "00" 和 "01" 计算S盒的输出. 百度查了很久,很多都是浅尝 ...

  4. python操作符顺序_Python语言中的操作符与运算顺序

    在新鲜出炉的9月TIOBE编程语言排行榜上,Python历史性的挤下C++,次进入前三位,Python的热度也以肉眼可见的速度快速上涨着,学习Python的人越来越多,不只是成人,很多青少儿也选择从P ...

  5. linux内核启用64位除法,关于内核中的乘法和除法。

    关于内核中的乘法和除法. 作者:heziq 发布于:2015-5-6 22:02 前几天一直在看wowo的时间子系统,一直在思索mult和shift变量,为什么mult要尽量大,shift尽量小.这是 ...

  6. 计算机表格中需要乘法求和,《怎么在Excel表格里面使用乘法求和》

    图解excel如何乘法自动求和 图解 点这个 excel表格中乘法函数是怎么用的? EXCEl中有三种方法可以实现乘法,分别是符号*,PRODUCT函数和POWER函数 利号"*" ...

  7. 线性代数中满足乘法交换律的运算-行列式与迹

    线性代数的计算中往往乘法不满足交换律 满足交换律的运算-行列式(determinant)与迹(trace) tr(AT)=tr(A)tr(A+B)=tr(A)+tr(B)tr(AB)=tr(BA)(A ...

  8. 【PTA】7-2 国王的奖励——分数取模、分治思想、快速幂、int64的乘法模运算【C/C++】

    文章目录 1 问题 1.1 题面描述 1.2 输入描述 1.3 输出描述 1.4 样例描述 1.5 样例解释 2 分析 2.1 数学抽象 2.2 解决方法 2.2.1 等比求和 2.2.1.1 求和公 ...

  9. 计算机底层加法/乘法实现

    计算机底层加法/乘法实现 存储方式 原理 加法 乘法 除法 代码实现 加法 乘法 存储方式 计算机底层中存放数字使用二进制形式,负数使用补码(反码+1)来存放. 原理 加法 两个二进制的相加结果是用一 ...

最新文章

  1. c语言 异或_C语言经典例题来袭!5大方法告诉你答案
  2. python 面向对象之:反射,双下方法
  3. 移动发布手机病毒警示信息 发现六种新型病毒
  4. python的OS库测试
  5. 在Chrome浏览器中保存的密码有多安全?
  6. 解决拼音汉字混合搜索,由于同音字导致搜出不相干的内容
  7. CPAL脚本自动化测试 ———— UDP 系列函数
  8. 【北交所周报】IPO上会5过5;四成个股实现上涨,硅烷科技涨56%,成单周涨幅最大个股;...
  9. 解放军--女“黑客”
  10. 为啥UI设计的值放到android studio中显示不准确?
  11. 【横向移动】内网渗透之内网信息收集
  12. 年审是当月还是当天_车辆年审到期是指当月吗?
  13. 趣图 | EDG牛逼!!!
  14. 面对对象之差异化的网络数据交互方式--单机游戏开发之无缝切换到C/S模式
  15. redis 运维讲解01
  16. 国内第一创作平台大佬,教你如何写好一篇技术博客?
  17. 文案是否有违禁词查询
  18. 智慧社区的介绍,为什么要做智慧社区
  19. C语言 对比数组内容的函数
  20. linux中license路径,Elasticsearch安装过程中的license问题解决办法

热门文章

  1. 仿LOL项目开发第一天
  2. Python 小型课设作业,仅200行代码,使用youtube-dl下载视频,使用OpenCV和ffmpeg处理视频成字符视频
  3. 如何将本地文件上传到腾讯云服务器(多图)
  4. VUE3项目-飞机大战3
  5. 数商云家电商城系统解决方案,优化电器商城采购供应链管理,减低库存提升资金利用率
  6. Zilliz 创始人兼 CEO 星爵当选 2021 中国开源优秀人物
  7. 学生信息录入java,基于java的学生信息管理系统
  8. 微信客户端解决众包资料的收集和分发
  9. Qt实现探测当前有没有网络连接(Wi-Fi)
  10. 使用 Debezium 将 MySQL 数据导出到 Amazon S3