加密的矩阵乘法逆

时间:2011-12-16 18:12:08

标签: math encryption matrix numeric matrix-inverse

我正在尝试将加密alogritm放在一起,但我遇到了以下问题,我甚至不知道它应该是这样吗?

问题:

我有16字节矩阵乘以[16,16]矩阵,结果是16字节矩阵。

然后我应该将结果矩阵乘以逆,这里我想我应该得到原始的16字节矩阵(根据算法数据表)。

所以,请你帮我告诉我怎样才能找回原始矩阵?

感谢您的帮助。

的问候,

主机。 AWS

1 个答案:

答案 0 :(得分:2)

有很多方法可以实现我认为你想要的东西,但它们取决于一些细节。

有许多方法可以反转矩阵(或者更常见的是,解决线性系统)。一些示例包括Gaussian eliminationGauss-Jordan eliminationL/U decomposition。您可以使用其中任何一个来解决A x = b的一般线性系统x;要获得A的倒数,您需要为矩阵A X = I求解X(其中I是单位矩阵)。

最重要的细节是:“乘法字节”是什么意思?你的乘法需要是有限域的一部分 - 在你的情况下可能是GF(256) - 否则你将无法将其反转。特别是,这意味着“乘法”将不是常规的处理器原生乘法;相反,你要么需要做一些小小的表演,要么进行表查找(这些表是由所说的比特来预先计算的)。此外,GF(256)“加法”和“减法”实际上是按位xor(注意,这意味着它们彼此相同)。

另一件事:既然您使用的是有限字段,我认为您不必担心旋转。要解释一下:如果你使用的是浮点数,你的线性系统求解器需要选择执行其基本步骤的顺序,以防止浮点错误以指数方式累积(你也希望避免实际计算逆矩阵,倾向于为每个向量使用线性系统求解器)。这种排序选择称为“旋转”,线性求解器上的大多数参考文献都非常关注它。

然而,由于有限域数学是精确的,您不必担心这种不稳定性 - 您可以按顺序执行求解器的步骤,并构造精确的逆矩阵。您唯一需要检查的是矩阵是否是单数:乘以奇异矩阵会丢失信息,因此无法反转,也不会成为可用的加密矩阵。