저는 AES를 뒤집습니다. mixcolumns 연산을 반전하고 GF (256)에서 14를 곱해야합니다. 이것은 내가 (p는 결과와 q (14)에 의해 번식하는 번호)와 함께 온 것입니다 :GF (256)에서 14 배 곱하기
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
int main()
{
uint8_t p=1, q=0x02;
p = (q<<1)^(q<<2)^(q<<3);//*(x³+x²+x)
//modulo x⁸+x⁴+x³+x+1
if((q>>5)<5&&(q>>5)!=0&&(q>>5)!=3)
p^=0x1B;
if((q>>5)>1&&(q>>5)<6)
p^=0x36;
if((q>>5)>3)
p^=0x6C;
printf("\n\n\t%2.2X\n\n",p);
return 0;
}
그것은 작동하지만 나는이 작업을 수행 할 수있는 간단한 방법이 있다고 생각하지만 난 그것을 찾을 수 없습니다 . 여기에서 가장 중요한 문제는 6 번의 비교를한다는 것입니다.
// modulo? 그러나 14로 곱하면 14 = 8 + 4 + 2이므로 p = (q << 3) + (q << 2) + (q << 1); –
GF AES 표준에 의해 지정된대로 x8 + x4 + x3 + x + 1 인 환원 가능 다항식을 모듈로 곱한다. –