Rijndael key schedule procedureRotWord
, SubWord
, और XOR
है, जो सभी _mm_aeskeygenassist_si128 द्वारा समर्थित हैं शामिल है:एसएसई में एईएस पूर्ण कार्य क्यों नहीं प्रदान करता है?
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)
हालांकि, यह एक पूरा दौर कुंजी वापस नहीं करता है। उदाहरण के लिए, बजाय बस
DEST[31:0] <- SubWord(X1)
,
निष्पादन के लिए मुझे लगता है कि हम वास्तव में प्रदर्शन करना चाहिए
DEST[31:0]<-RotWord(SubWord(X3)) XOR RCON XOR X0
।
नतीजतन, _mm_aeskeygenassist_si128
के बाद, हम डेवलपर्स के लिए कुछ अतिरिक्त काम करने के लिए पहले दौर कुंजी पूरी तरह से उत्पन्न होता है की है।
क्यों SSE एक पूरा एईएस कुंजी पीढ़ी प्रक्रिया प्रदान नहीं करते हैं?