gpt4 book ai didi

c++ - AES 限制和混合列

转载 作者:行者123 更新时间:2023-11-28 03:52:30 25 4
gpt4 key购买 nike

所以我们都同意 key 是 128 位或 192 位或 256 位的固定长度。如果我们的上下文大小为 50 个字符(字节)% 16 = 2 字节。所以我们对context进行了3次加密,但是剩下的两个bytes将如何存储在State block中。我应该填充它们吗,标准没有指定如何处理这种情况。

MixColumns 阶段是 AES 中最复杂的方面,但是我一直无法理解数学表示。我了解矩阵乘法,但我对数学结果感到惊讶。将一个值乘以 2,左移为小端 1 位置,右移为大端。如果我们将最高有效位设置为 1 (0x80),那么我们应该将移位后的结果与 0x1B 进行异或运算。我认为乘以 3 意味着将值移动 2 个位置。

我查看了维基百科上的各种来源,甚至是提供 C 实现的教程。但我更感兴趣的是完成我自己的实现!感谢您提供任何可能的输入。

最佳答案

在混合列阶段,指数相乘。

take this example
AA*3
10101010*00000011
is
x^7+x^5+x^3+x^1*x^1+x^0
x^1+x^0 is 3 represented in polynomial form
x^7+x^5+x^3+x^1 is AA represented in polynomial form
first take x^1 and dot multiply it by the polynomial for AA.
that results in...
x^8+x^6+x^4+x^2 ... adding one to each exponent
then reduce this to 8 bits by XoRing by 11B
11B is x^8+x^4+x^3+x^1+x^0 in polynomial form.
so...
x^8+x6+x^4+ x^2
x^8+ x^4+x^3+ x^1+x^0
leaves
x^6+x^3+x^2+x^1+x^0 which is AA*2
now take AA and dot multiply by x^0 (basically AA*1)
that gives you
x^7+x^5+x^3+x^1 ... a duplicate of the original value.
then exclusive or AA*2 with AA*1
x^7+ x^5+x^3+ x^1
x^6+ x^3+x^2+x^1+x^0
which leaves
x^7+x^6+x^5+x^2+x^0 or 11100101 or E5
I hope that helps.
here also is a document detailing the specifics of how mix columns works.

mix_columns.pdf

编辑:普通矩阵乘法不适用于此..所以忘记普通矩阵吧。

关于c++ - AES 限制和混合列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4964515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com