gpt4 book ai didi

c++ - 如何对两个 4 位数字进行乘法,将它们视为 C++ 中的多项式

转载 作者:行者123 更新时间:2023-11-28 04:03:39 27 4
gpt4 key购买 nike

我正在使用 C++ 模拟一个小型 AES 加密/解密算法。

为此,我需要将两个 4 位数 相乘,同时将它们视为多项式。

它经历了一些阶段,将它们转换为多项式,将两个多项式相乘,然后在需要时使用预定义的不可约多项式进行多项式约简以降低功率,最后将它们转换回 4 位格式。

例如,乘法 1011 ⊗ 0111 类似于 x3+x+1 ⊗ x2+x+1答案是,如果 x5+x4+1 具有 5 的幂,那么您需要通过除以预定义多项式 x4+x+1< 来减少它。答案将是 x2,即 0100

非常感谢!

最佳答案

例如你可以这样做

unsigned int multiply_poly(unsigned int a, unsigned int b)
{
unsigned int ret = 0;
while(a)
{
if(a & 1)
{
ret ^= b;
}
a >>= 1;
b <<= 1;
}
return ret;
}

说明:你基本上是写乘法。您将 a 向右移动并始终查看最后一位。如果它是 0,如果它是 1,则您不添加任何东西,您与 b 异或。由于 xor 不完全是整数的加法,因此这不仅仅是 a*b。大家可以想想为什么两个多项式的相加可以通过异或来完成。由于我们将 b 向左移动,它总是与 a 中的当前单数相乘。

关于c++ - 如何对两个 4 位数字进行乘法,将它们视为 C++ 中的多项式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59117687/

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