在AES密鑰計劃教程中,我看到密鑰計劃(rotate,rcon,s-box)的操作應用於一個4字節的單詞。請你解釋這個單詞來自哪裏?我知道我從128位長的密鑰中提取它。密鑰保存爲4x4矩陣。我怎樣才能獲得用於密鑰計劃的單詞?也許這是一個容易的問題,但我不明白。謝謝。AES密鑰計劃
Q
AES密鑰計劃
2
A
回答
2
它的解釋here (with some code)。它是「迄今爲止」擴展鍵的最後4個字節。
您以128位(16字節)鍵開頭。擴展密鑰的前16個字節是那些字節。
你取最後4個字節的那個,做(rotate,rcon,s-box)舞蹈,並且得到4個字節,你用4個字節提前16個字節(所以,第一次,在密鑰的開始),並將其附加到擴展密鑰。
您將擴展密鑰的最後4個字節(您剛剛添加的內容)與異或字節16位字節「返回」(所以第一次是字節5到8)並將結果追加到擴展密鑰。
您重複3次另外2次,每次使用擴展密鑰的最後4個字節。
從2開始重複,直到獲得所需的總擴展長度。
所以總是使用最後附加到擴展鍵的4個字節。你用16個字節的「部分」來完成,其中該部分的前4個字節是使用(rotate,rcon,s-box)「初始化」的。
它也在the standard的第5.2節中有所解釋,稍有不同(以及可能會更清楚地回答您的問題)。他們將它描述爲始終佔用最後4個字節,並且每4次用4個字節的16個字節先前PLUS來執行(旋轉,rcon,s-box)舞蹈。這更清楚地表明上述步驟2和3中的xor是「相同的」。
對於較長的鍵,您可以調整上述的一些常量(這樣您可以做更長的「節」)。
相關問題
- 1. 加密AES密鑰?
- 2. AES密鑰,加密
- 3. 存儲AES密鑰
- 4. M2Crypto的AES密鑰
- 5. Byte []密鑰加密C#Aes
- 6. OpenSSL密鑰在aes加密?
- 7. Android AES加密密鑰
- 8. AES加密密鑰和IV
- 9. AES密鑰包裝加密
- 10. 從RSA編碼的AES密鑰生成AES密鑰
- 11. ARM和Intel內部函數對AES使用相同的子密鑰計劃嗎?
- 12. C#AES密鑰文件
- 13. HSM AES密鑰提取
- 14. OpenSSL - 查找AES密鑰
- 15. 從EVP_CIPHER_CTX獲取AES密鑰
- 16. 何處存儲AES密鑰?
- 17. 改變AES密鑰它
- 18. 是AES密鑰隨機?
- 19. Android AES crypt 192bit密鑰
- 20. 安全存儲AES密鑰
- 21. 執行計劃 - 刪除密鑰查找
- 22. AES密鑰和iv來自RSA私鑰
- 23. AES加密 - 密鑰生成與OpenSSL的
- 24. 僅基於密碼生成AES密鑰
- 25. java.security AES加密密鑰長度
- 26. AES加密和密鑰存儲?
- 27. 想要爲AES加密創建密鑰
- 28. AES自定義密碼密鑰
- 29. 如何傳輸AES加密密鑰?
- 30. 加密使用base32密鑰的AES
這些問題最好在crypto.stackexchange.com上提問(當然,如果不存在的話)。 –