國家標準與技術研究所(NIST)於2002年5月26日制定了新的高級數據加密標準(AES)規範。在本文中,我將提供壹個用C#編寫的運行中的AES實現,並詳細解釋什麽是AES以及編碼是如何工作的。我將向您展示如何使用AES加密數據,並擴展本文中給出的代碼來開發商業質量的AES類。我還將解釋如何將AES集成到您的軟件系統中,為什麽,以及如何測試基於AES的軟件。
請註意,本文中提供的代碼以及基於本文的任何其他實現都在聯邦加密模塊出口控制的應用範圍內(詳見商業加密出口控制)。
AES是壹種新的加密算法,可用於保護電子數據。具體來說,AES是壹種叠代對稱密鑰分組密碼,可以使用128、192和256位密鑰,用128位(16字節)加密和解密數據。與使用密鑰對的公鑰加密不同,對稱密鑰加密使用相同的密鑰來加密和解密數據。分組密碼返回的加密數據的位數與輸入數據的位數相同。叠代加密使用循環結構,其中輸入數據的置換和替換重復進行。圖1顯示了AES使用192位密鑰加密和解密16字節的數據塊。
圖1部分數據
AES算法概述
AES算法基於置換和替換。替換是數據的重新排列,而替代是用壹個數據單元替換另壹個數據單元。AES使用幾種不同的技術來實現置換和替換。為了說明這些技術,讓我們用圖1所示的數據來討論壹個具體的AES加密例子。以下是您要加密的128位值及其對應的索引數組:
00 11 22 33 44 55 66 77 88 99 aa bb cc DD ee ff 0 1 2 3 4 5 6 7 8 9 10 1 1 12 13 14 15
192位密鑰的值為:
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 1 12 13 14 15 16 17 0 17 0 1 2 3 4 5 6 7 8 9 10
圖2 S盒(Sbox)
當調用AES的構造函數時,會初始化兩個加密方法表。第壹個表叫S- box而不是box。是壹個16×16的矩陣。S- box的前5行和前5列如圖2所示。在幕後,加密例程獲取密鑰數組,並使用它生成壹個名為w[]的密鑰表,如圖3所示。
網頁鏈接,妳也可以去這裏看看。