Các Rijndael key schedule procedure liên quan đến RotWord
, SubWord
, và XOR
, tất cả được hỗ trợ bởi _mm_aeskeygenassist_si128:Tại sao AES trong SSE không cung cấp đầy đủ chức năng?
X3[31:0] ← SRC [127: 96];
X2[31:0] ← SRC [95: 64];
X1[31:0] ← SRC [63: 32];
X0[31:0] ← SRC [31: 0];
RCON[31:0] ← ZeroExtend(Imm8[7:0]);
DEST[31:0] ← SubWord(X1);
DEST[63:32 ] ← RotWord(SubWord(X1)) XOR RCON;
DEST[95:64] ← SubWord(X3);
DEST[127:96] ← RotWord(SubWord(X3)) XOR RCON;
DEST[VLMAX-1:128] (Unmodified)
Tuy nhiên, nó không trả lại một phím tròn hoàn chỉnh. Ví dụ, thay vì chỉ đơn giản là thực hiện
DEST[31:0] <- SubWord(X1)
,
Tôi đoán chúng tôi thực sự nên thực hiện
DEST[31:0]<-RotWord(SubWord(X3)) XOR RCON XOR X0
.
Kết quả là, sau _mm_aeskeygenassist_si128
, chúng tôi nhà phát triển phải thực hiện thêm một số công việc trước khi khóa tròn được tạo hoàn toàn.
Tại sao SSE không cung cấp quy trình tạo khóa AES hoàn chỉnh?