AES关于xtime运算

GF(2^8)定义的一个运算为x乘法,其定义为:

 如果b7=0,求模结果不变,否则为乘积结果减去m(x),即求乘积结果与m(x)的异或。由此得出,x(十六进制02)乘b(x)可以先对b(x)在字节内左移一位(最后一位补0);若b7=1,则x乘b(x)可以先对b(x)在字节内左移一位再与1B(其二进制为00011011)做逐比特异或来实现,该运算记为b=xtime(a)。

x的幂乘运算可以重复应用xtime来实现。而任意常数乘法可以通过对中间结果相加实现。

规则【1】:x的幂乘运算可以重复应用xtime来实现,即左边不断与2相乘,这一过程到(80)即可。

规则【2】:任意常数的乘法可以通过中间结果相加实现。

例:

'57'•'02'=xtime(57)=’AE’

'57'•'04'=xtime(AE)=’47’

'57'•'08'=xtime(47)=’8E’

'57'•'10'=xtime(8E)=’07’   //2*8=16,,16的十六进制是10

'57'•'20'=xtime(07)=’0E’

'57'•'40'=xtime(OE)=’1C’

'57'•'80'=xtime(1C)=’38’

推导如下:

‘57’·‘01’=‘57’=01010111

因为b7=0,所以xtime(‘57’)=10101110=‘AE’,即‘57’·‘02’=xtime(‘57’)=‘AE’ //10101110由‘57’的二进制数左移一位右边第一位补0而来

因为b7=1,所以xtime(‘AE’)=0101110000011011=01000111=‘47’,即‘57’·‘04’=xtime(‘AE’)=‘47’ //01011100由‘57’的二进制数左移一位右边第一位补0而来,此时需再与00011011(1B)做异或运算

因为b7=0,所以xtime(‘47’)=10001110=‘8E’,即‘57’·‘08’=xtime(‘47’)=‘8E’

因为b7=1,所以xtime(‘8E’)=00011100⊕00011011=00000111=‘07’,即‘57’·‘10’= xtime(‘8E’)=‘07’

因为b7=0,所以xtime(‘07’)=00001110=‘0E’,即‘57’·‘20’=xtime(‘07’)=‘0E’

因为b7=0,所以xtime(‘0E’)=00011100=‘1C’,即‘57’·‘40’=xtime(‘0E’)=‘1C’

因为b7=0,所以xtime(‘1C’)=00111000=‘38’,即‘57’·‘80’=xtime(‘1C’)=‘38’

相关计算:

(1)57·0A    //0A为十六进制,A仅能由02、04、08拼凑,不能用10,10是十进制16.

=57·(02⊕08)

=57·02⊕57·08

=AE⊕8E

=10101110⊕10001110

=00100000

=20

(2)57·2B

=57·(20⊕08⊕02⊕01)

=57·20⊕57·08⊕57·02⊕57·01

=0E⊕8E⊕AE⊕57

=00001110⊕10001110⊕10101110⊕01010111

=01111001

=79

(3)57·37

=57·(20⊕10⊕04⊕02⊕01)

=57·20⊕57·10⊕57·04⊕57·02⊕57·01

=0E⊕07⊕47⊕AE⊕57

=00001110⊕00000111⊕01000111⊕10101110⊕01010111

=10110111

=B7

(4)57·59

=57·(40⊕10⊕08⊕01)

=57·40⊕57·10⊕57·08⊕57·01

=1C⊕07⊕8E⊕57

=00011100⊕00000111⊕10001110⊕01010111

=11000010

=C2

(5)57·6C

=57·(40⊕20⊕08⊕04)

=57·40⊕57·20⊕57·08⊕57·04

=1C⊕0E⊕8E⊕47

=00011100⊕00001110⊕10001110⊕01000111

=11011011

=DB

(6)57·73

=57·(40⊕20⊕10⊕02⊕01)

=57·40⊕57·20⊕57·10⊕57·02⊕57·01

=1C⊕0E⊕07⊕AE⊕57

=00011100⊕00001110⊕00000111⊕10101110⊕01010111

=11101100

=EC

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值