그래서 우리 모두는 고정 길이가 128 비트 또는 192 비트 또는 256 비트임을 동의합니다. 우리의 컨텍스트가 50 바이트 (바이트) % 16 = 2 바이트 인 경우. 그래서 우리는 컨텍스트를 3 번 암호화하지만, 나머지 2 바이트는 State 블록에 어떻게 저장 될 것입니다. 나는 그것들을 덧씌우면, 표준은 그러한 조건들을 다루는 방법을 명시하지 않는다.AES 제한 및 MixColumn
MixColumns 단계는 AES에서 가장 복잡한 측면이지만 수학 표현을 이해할 수 없었습니다. 행렬 곱셈에 대한 이해가 있지만 수학적 결과에 놀랐습니다. 값에 2를 곱하면 리틀 엔디안 1 위치에서 왼쪽으로 시프트하고 빅 엔디안에서 오른쪽으로 시프트합니다. 가장 중요한 비트가 1 (0x80)로 설정 되었다면 0x1B로 시프트 된 결과를 XOR해야합니다. 나는 3을 곱하면 값 2의 위치를 이동시키는 것을 의미한다고 생각했습니다.
C 구현을 제공하는 튜토리얼 인 위키 백과에서 다양한 출처를 확인했습니다. 하지만 내 자신의 구현을 완성하는 데 더 관심이 있습니다! 가능한 모든 입력 해 주셔서 감사합니다. 귀하의 질문에 대한 응답으로
2 비트 씩 이동하려면 4를 곱하거나 나눕니다. –
AES는 블록 암호 일뿐입니다. 실제 데이터를 암호화하려면 CBC (암호화 블록 연결) 또는 CTR (카운터 모드)과 같이 적절한 _mode_를 선택해야합니다. CBC는 블록 모드이므로 패딩에 적합한 방법을 찾아야합니다 (귀하에게 달려 있습니다). CTR은 스트림 모드이므로 모든 바이트 수를 암호화 할 수 있습니다. –