用XOR乘以字节[关闭]

问题描述 投票:0回答:1

所以,在我提出问题之前。我试过搜索这个,但我可能没有正确写字以获得任何有效的结果。因此,目的是在AES 128位加密程序中使用。

我需要将unsigned char(可能是十六进制值)乘以2或3,这将是一个XOR操作。所以基本上,有没有办法做到这一点,而不是像这样输入它。

(SBOX[0] ^ SBOX[0]) ^ SBOX[0]

如果我必须这样做,每一行都会相当长,但我相信可以做到。如果有一个运营商只是说3 ^ SBOX[0]会很好。

c++ aes
1个回答
2
投票

如果你正在做AES,那么你在Galois Field(特别是GF(28))中进行算术运算。因此,您习惯于标准整数的规则不再适用。

特别是,当加法是XOR(在GF(2n)中)时,乘法不是重复加法。你的例子说明了为什么 - 乘以2将是x ^ x == 0总是。

实际的步骤(代码中)取决于你的伽罗瓦域的还原多项式(在任何情况下,导出它们都超出了我现在的能力范围)。但是,它们在网络上的多个位置进行了总结。在许多情况下,这些解释专门针对S-box MixColumns操作,例如Wikipedia

© www.soinside.com 2019 - 2024. All rights reserved.