freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

高級加密標(biāo)準(zhǔn)aes外文翻譯-其他專業(yè)(編輯修改稿)

2025-02-24 01:14 本頁面
 

【文章內(nèi)容簡介】 做 RotateRows 更好)將 row[0] 向左旋轉(zhuǎn) 0 個(gè)位置,將 row[1] 向左旋轉(zhuǎn) 1 位置等等。 把 State[] 拷貝到 temp[] 矩陣之后,然后用下面的這行代碼實(shí)現(xiàn)轉(zhuǎn)換: [r, (c + r) % Nb ] = temp[r,c]。 這里利用 %操作符的優(yōu)點(diǎn)抱合一行。 MixColumns 方法 (Figure 14)用 GF(28)加和乘,以字節(jié)列中所有其它值的線性組合對每一個(gè)字節(jié)進(jìn)行替換。 乘法所用的常量系數(shù)基于域論的,并且是 0x01, 0x02或 0x03中的任意一個(gè)值。給定某一列 c ,其替代式如下: State[0,c] = 0x02 * State[0,c] +0x03 * State[1,c] +0x01 * State[2,c] +0x01 * State[3,c] State[1,c] = 0x01 * State[0,c] +0x02 * State[1,c]+0x03 * State[2,c]+ 0x01 * State[3,c] State[2,c] = 0x01 * State[0,c] + 0x01 * State[1,c] +0x02 * State[2,c] +0x03 * State[3,c] State[3,c] = 0x03*State[0,c]+0x01 * State[1,c]+0x01*State[2,c]+0x02 * State[3,c] 這些表達(dá)式稍微有些長,因此我決定編寫返回 GF(28)與 0x01,0x02 和 0x03 之乘積的私有輔助函數(shù)。這些輔助函數(shù)非常短。例如,一個(gè)字節(jié) b 被 0x03 域乘的代碼如下: return (byte) ( (int)gfmultby02(b) ^ (int)b )。 正如我前面討論的,被 0x02 乘是所有 GF(28) 乘法的基本操作。我調(diào)用了我的 gfmultby02 方法,我改變了使用與規(guī)范相同的方法命名慣例,規(guī)范上稱此例程為 xtime。 Cipher 方法其輸入 反復(fù)應(yīng)用四個(gè)操作來產(chǎn)生加密的輸出。 AddRoundKey 用源于單個(gè)原始種子密鑰的多重輪密鑰來替代字節(jié)。 SubBytes 用某個(gè)替換表中的值替代字節(jié)。 ShiftRows 用移動字節(jié)行置換字節(jié),而 MixColumns 用某一列的域加和乘法值來替代字節(jié)。 用 C編寫 AES InvCipher 方法 AES 解密算法背后的基本原則很簡單:解密一個(gè)加密塊,也就是以反向順序還原( Undo)每個(gè)操作。盡管這是基本概念,但仍有幾個(gè)細(xì)節(jié)要處理。 AES 規(guī)范稱解密例程為 InvCipher,而不是 Decipher 或 Decrypt 中的一個(gè)。這是 AES 背后的數(shù)學(xué)基礎(chǔ)的反映,它基于可逆的數(shù)學(xué)操作。 如果你將這個(gè)代碼和 Cipher 代碼比較的話,你會看到它比你預(yù)期的漂亮很多,但是有兩點(diǎn)例外。首先,在 InvCipher 方法中逆方法調(diào)用(如 InvSubBytes)順序并不完全與在 Cipher 方法中相應(yīng)調(diào)用(如 SubBytes)的逆向順序正好相同。其次, InvCipher 調(diào)用的是一個(gè) AddRoundKey 方法而不是 InvAddRoundKey 方法。值得注意的是 InvCipher 算法用密 鑰調(diào)度表并不是從較高編號的索引處開始向下處理至第 0行。 InvSubBytes, InvShiftRows 和 InvMixColumns 方法的代碼和與之有關(guān)的 SubBytes, ShiftRows 和 MixColumns 方法的代碼非常接近。 InvSubBytes 方法幾乎就是 SubBytes 方法,只是它用逆替換表 iSbox[] 而不是 Sbox[] 表。 正如你可能猜測到的, iSbox[] 就是還原任何被 Sbox[] 處理的對應(yīng)操作。比如,如果你有字節(jié) b 等于 0x20,并在 Sbox[] 中找到其代替值,你得到 0xb7。如果你在 iSbox[] 中找到 0xb7的替代值,你便可得到 0x20。 相似地, InvShiftRows 方法還原 ShiftRows 方法 —— row[0] 被右移了 0 個(gè)位置, row[1] 被右移了 1個(gè)位置, row[2] 被右移了 2 個(gè)位置,而 row[3] 被右移了 3個(gè)位置。 InvMixColumns 方法還原 MixColumns 的工作,但沒有用顯而易見的方法。回想一下, MixColumns 用原始字節(jié)列中的字節(jié)線性組合替換狀態(tài)矩陣中的每個(gè)字節(jié),并且系數(shù)是 0x01, 0x02,和 0x03,域論再一次得到應(yīng)用。它證明逆運(yùn)算是相似的,只是被 0x09, 0x0b, 0x0d 和 0x0e 乘,如下所示: State[0,c] = 0x0e * State[0,c] +0x0b * State[1,c] + 0x0d * State[2,c] + 0x09 * State[3,c] State[1,c] = 0x09 * State[0,c] +0x0e * State[1,c] +0x0b * State[2,c] +0x0d * State[3,c] State[2,c] = 0x0d * State[0,c] +0x09 * State[1,c] +0x0e * State[2,c] +0x0b * State[3,c] State[3,c] = 0x0b * State[0,c] +0x0d * State[1,c] +0x09 * State[2,c] +0x0e * State[3,c] 對于 MixColumns 方法,我決定專門寫一個(gè)輔助函數(shù),而不是內(nèi)聯(lián)展開已經(jīng)較長的表達(dá)式或?qū)懸粋€(gè)普通的乘法輔助函數(shù)。讓我向你展示一下我示如何 編寫這個(gè)任何字節(jié) b 被常數(shù) 0x0e (在 10 進(jìn)制中的 14)乘的函數(shù),像任何數(shù)字一樣,數(shù)字 14 可以被表示成 2 的冪的和,因此, 14 等于 2 + 4 + 8。并且 4 等于 2 的平方, 8 等于 2 的立方,你可以將 14 表示為 2 + 22 + 23。記住加法就是 GF(28)中上的異或 (^),既然我已經(jīng)有了 gfmultby02 函數(shù),我可以用它得到我的結(jié)果: return (byte)( (int)gfmultby02(gfmultby02(gfmultby02(b))) ^ /* 23 + */ (int)gfmultby02(gfmultby02(b)) ^ /* 22 + */ (int)gfmultby02(b) )。 /* 2 */ 用于 AES 加密算法的所有的操作都是可逆的,因此解密算法本質(zhì)上是加密的所有操作的倒轉(zhuǎn)。 使用 AES 類 用 C實(shí)現(xiàn) AES 的特色之一就簡單。看看 Figure 15,它是我用來生成輸出 Figure 1 的代碼。聲明了 16 字節(jié) 明文輸入硬代碼值和 24 字節(jié) (192 位 )的種子密鑰后,一個(gè) AES 對象被初始化,加密 Cipher 方法 將明文加密成為密文,然后再用 InvCipher 將密文解密。非常清楚和簡單。 因?yàn)? AES 對象針對字節(jié)數(shù)組進(jìn)行處理,你可以輕松地用它處理 .NET 的其它數(shù)據(jù)類型。我創(chuàng)建了一個(gè)基于 Windows 的小 Demo 程序,它接受一個(gè) 單純的字符串 ——有 8 個(gè)字符 (16byte) ,對它進(jìn)行加密和解密處理。運(yùn)行畫面如 Figure 16。 Figure 16 加密 Demo 程序 因?yàn)榧用芎徒饷芾潭夹枰烙脩舳x的密鑰長度,我把它當(dāng)作一個(gè)類范圍的變量來聲明,像這樣: private keysize。 注意種子密鑰并不是由用戶定義的。這個(gè) demo 程序用一個(gè) “空密鑰 ”( null key)作為種子密鑰,通過為構(gòu)造函數(shù)提供一個(gè)啞參數(shù) new byte[16] 使得它全部由零字節(jié)組成。啞參數(shù)的長度是不相關(guān)的,因?yàn)榉N子密鑰還是要被初始化為零??彰荑€加密和解密是一個(gè)容易和有效的辦法來阻止外界對數(shù)據(jù)偶然的檢查。在 中的 和 方法使得將一個(gè) .NET 字符串轉(zhuǎn)換成一個(gè)字節(jié)數(shù)組變得非常容易,反之亦然。 實(shí)現(xiàn)選擇 現(xiàn)在讓我們看看本文 AES 實(shí)現(xiàn)中出現(xiàn)的 一些重要的變量,本文提供的代碼可能出現(xiàn)的擴(kuò)展,以及針對 AES 的密碼分析學(xué)攻擊。 和我曾經(jīng)處理的任何代碼一樣, AES 算法也可以用其它可選的途徑來實(shí)現(xiàn)。為什么這很重要呢? AES 被試圖廣泛應(yīng)用于各種系統(tǒng),從只有很少內(nèi)存容量的智能卡( smart cards)到大型的多處理器主機(jī)系統(tǒng)。在許多情況下,性能是關(guān)鍵因素,并且有時(shí)內(nèi)存或處理器資源是有限的。事實(shí)上, AES 的每個(gè)例程都能針對非常昂貴的內(nèi)存資源進(jìn)行性能優(yōu)化,反之亦然。比如,為替換表 Sbox[] 分配 256 個(gè)值看起來好像很簡單直白。但是,這些值是基 于 GF(28) 理論的,它們都可以用編程方式來生成。逆向替換表和輪常數(shù)表也是如此。 可選實(shí)現(xiàn)另外一個(gè)有趣的可能性是 Cipher 和 InvCipher 方法所用的 GF(28) 乘法。我的實(shí)現(xiàn)代碼是一個(gè)被 0x02 乘的基本函數(shù),而后是六個(gè)調(diào)用 gfmultby02 的附加函數(shù)。另一個(gè)可能性應(yīng)該是寫一個(gè)一般的乘法函數(shù),并用它代替我目前實(shí)現(xiàn)的七個(gè)單獨(dú)函數(shù)。另一個(gè)極端是你可以用被 0x01, 0x02, 0x03, 0x09, 0x0b, 0x0d 和 0x0e 乘好的所有 256 個(gè)可能的字節(jié)值構(gòu)成的 一個(gè)完整乘積表。此外,實(shí)現(xiàn) GF(28) 乘法另一途徑是通過在兩個(gè) 256 個(gè)字節(jié)的數(shù)組里查找,通常稱為 alog[] 和 log[],因?yàn)樗鼈冊? GF(28)中基于某些類似對數(shù)的方法。 雖然這里給出的 AES 類完全能用于加密任何形式的 .NET 數(shù)據(jù),你可能考慮想用各種方法擴(kuò)展它。首先,因?yàn)楸疚牡闹攸c(diǎn)在于清楚地解釋 AES,所有 錯(cuò)誤檢查被剝離掉,以我的經(jīng)驗(yàn),為某個(gè)象 AES 這樣的類添加合理數(shù)量的錯(cuò)誤檢查將會產(chǎn)生三倍的代碼量膨脹。因?yàn)? AES 使用了這么多的數(shù)組,需要做很多索引 邊界檢查。例如,所給出 的構(gòu)造函數(shù)甚至都不檢查種子密鑰參數(shù)的長度。 你可能還考慮通過添加更多的特性來擴(kuò)展 AES 類。最明顯的一個(gè)地方是添加加密和解密 .NET 基本數(shù)據(jù)類型的方法,比如: 和 。更加雄心勃勃的擴(kuò)展可能會是實(shí)現(xiàn)一個(gè) 流數(shù)據(jù)加密類。 AES 的安全性怎樣呢?這是一個(gè)很難回答的問題,但是一般多數(shù)人的意見是:它是目前可獲得的最安全的加密算法。 AES 已被列為比任何現(xiàn)今其它加密算法更 安全的一種算法。在理論和實(shí)踐基礎(chǔ)上, AES 被認(rèn)為是 “安全的 ”,因?yàn)橐平馑脑?,唯?有效的方法是強(qiáng)行( bruteforce)生成所有可能的密鑰。 如果密鑰長度為 256 位,還沒有已知的攻擊可以在一個(gè)可接受的時(shí)間內(nèi)破解 AES(即便在當(dāng)今最快的系統(tǒng)上,它也要花費(fèi)數(shù)年時(shí)間)。 注意針對 AES 密碼最可能成功的攻擊來自一個(gè)允許時(shí)間選擇攻擊的弱實(shí)現(xiàn)。攻擊者用不同的密鑰并精確地測量出加密例程所需的時(shí)間。如果加密例程被粗心編碼 ,因此執(zhí)行時(shí)間便依賴于密鑰值,它就有可能推導(dǎo)出有關(guān)密鑰的信息。在 AES 中,這種事情最可能發(fā)生在 MixColumns 例程中,因?yàn)橛杏虺恕? 針對這種攻擊的兩個(gè)安全 措施是加入虛指令,以便所以所有乘法都需要相同數(shù)量的指令,或者將域乘實(shí)現(xiàn)為一個(gè)查詢表,就象我前面描述的那樣。 AES 有許多種可能的實(shí)現(xiàn),尤其是是使用查詢表而不是計(jì)算。本文提供的 AES 基本類可以被用于加解密任何形式的 .NET 數(shù)據(jù)或 被擴(kuò)展成一個(gè)具有更多功能的類。 結(jié)束語 新的 AES 將無疑成為加密所有形式電子信息的事實(shí)上的標(biāo)準(zhǔn),取代 DES。AES 加密的數(shù)據(jù)在某種意義上是牢不可破的,因?yàn)闆]有已知的密碼分析攻擊可以解密 AES 密文,除非強(qiáng)行遍歷搜索所有可能的 256 位密鑰。 我發(fā)現(xiàn)在 Microsoft .NET Framework 上實(shí)現(xiàn) AES 類的主要的障礙是官方文檔是以一個(gè)數(shù)學(xué)家的觀點(diǎn),而不是以一個(gè)軟件開發(fā)者的觀點(diǎn)來寫的。尤其是該規(guī)范假定讀者十分熟悉 GF(28) 域,并省略了幾個(gè)正確實(shí)現(xiàn) AES 所必需的關(guān)于 GF(28) 乘法的關(guān)鍵事實(shí)。我在本文中試圖努力去掉 AES 的神秘面紗,特別是圍繞在 GF(28) 域乘法部分的。 以 .NET Framework 庫的形式從 Microsoft 以及第三方供應(yīng)商處獲得對 AES 的廣泛支持只是一個(gè)時(shí)間問題。然而,處于種種理由,讓 本文代碼作為你的技能儲備仍然是有價(jià)值的。這個(gè)實(shí)現(xiàn)尤其簡單,并且是低資源開銷。另外,閱讀并理解源代碼將使你能定制 AES 類且更有效地使用它的任何實(shí)現(xiàn)。 在任何軟件設(shè)計(jì)過程中安全已不再是后顧之憂。 AES 是一個(gè)重大進(jìn)步,使用并理解它將大大增加軟件系統(tǒng)的可靠性和安全性。 Encrypt It::Keep Your Data Secure with the New Advanced Encryption Standard James McCaffrey SUMMARY The Advanc
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1