亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問板塊 發(fā)新帖
查看: 7527 | 回復(fù): 15
打印 上一主題 下一主題

AES加密算法的研究與實(shí)現(xiàn) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-03-03 07:56 |只看該作者 |倒序?yàn)g覽
本帖最后由 lanneret_sky 于 2011-03-03 07:59 編輯

1、AES加密算法簡(jiǎn)介
AES(The Advanced Encryption Standard),又稱Rijndael加密法,該演算法為比利時(shí)密碼學(xué)家Joan Daemen和Vincent Rijmen所設(shè)計(jì),結(jié)合兩位作者的名字,以Rijdael命名。是美國(guó)聯(lián)邦政府采用的一種分塊加密標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)用來(lái)替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。經(jīng)過五年的甄選流程,高級(jí)加密標(biāo)準(zhǔn)由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院 (NIST)于2001年11月26日發(fā)布于FIPS PUB 197,并在2002年5月26日成為有效的標(biāo)準(zhǔn)。2006年,高級(jí)加密標(biāo)準(zhǔn)已然成為對(duì)稱密鑰加密中最流行的演算法之一。它被預(yù)期能成為人們公認(rèn)的加密包括金融、電信和政府?dāng)?shù)字信息的方法。美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究所(NIST)在2002年5月26日建立了新的高級(jí)數(shù)據(jù)加密標(biāo)準(zhǔn)(AES)規(guī)范。
AES 是一個(gè)新的可以用于保護(hù)電子數(shù)據(jù)的加密算法。明確地說(shuō),AES 是一個(gè)迭代的、對(duì)稱密鑰分組的密碼,它可以使用128、192 和 256 位密鑰,并且用 128 位(16字節(jié))分組加密和解密數(shù)據(jù)。與公共密鑰密碼使用密鑰對(duì)不同,對(duì)稱密鑰密碼使用相同的密鑰加密和解密數(shù)據(jù)。通過分組密碼返回的加密數(shù)據(jù)的位數(shù)與輸入數(shù)據(jù)相同。迭代加密使用一個(gè)循環(huán)結(jié)構(gòu),在該循環(huán)中重復(fù)置換(permutations )和替換(substitutions)輸入數(shù)據(jù)。
2、AES加密算法描述
AES 算法是基于置換和代替的。置換是數(shù)據(jù)的重新排列,而代替是用一個(gè)單元數(shù)據(jù)替換另一個(gè)。AES 使用了幾種不同的技術(shù)來(lái)實(shí)現(xiàn)置換和替換,包括:S盒置換(SubBytes),行循環(huán)移位(ShiftRows),伽洛瓦域多項(xiàng)式運(yùn)算,列混合預(yù)算。
2.1、分組(State)
密碼運(yùn)算的中間結(jié)果稱為狀態(tài)(State)。
State的表示:狀態(tài)用以字節(jié)為基本構(gòu)成元素的矩陣陣列來(lái)表示,該陣列有4行,列數(shù)記為Nb.
Nb=分組長(zhǎng)度(bits)÷ 32
Nb可以取的值為4,6,8,對(duì)應(yīng)的分組長(zhǎng)度為128, 192, 256 bits。
2.2、密鑰(Cipher Key)
Cipher Key類似地用一個(gè)4行的矩陣陣列來(lái)表示,列數(shù)記為Nk. Nk=密鑰長(zhǎng)度(bits)÷32                                 
Nk可以取的值為4,6,8,對(duì)應(yīng)的密鑰長(zhǎng)度為128, 192, 256 bits.
密鑰擴(kuò)展:密鑰bit的總數(shù)=分組長(zhǎng)度×(輪數(shù)Round+1)例如當(dāng)分組長(zhǎng)度為128bits和輪數(shù)Round為10時(shí),輪密鑰長(zhǎng)度為128×(10+1)=1408bits。密鑰的長(zhǎng)度是夠使用的,所以必須將密碼密鑰擴(kuò)展成一個(gè)擴(kuò)展密鑰。擴(kuò)展算法:第i-1輪的分組長(zhǎng)度個(gè)字節(jié)的子密鑰被分成4組來(lái)處理,每組4個(gè)字節(jié)。最后一組的4個(gè)字節(jié)先執(zhí)行一個(gè)字節(jié)的循環(huán)左移,由S盒(這個(gè)S盒與字節(jié)替代時(shí)的S盒是一樣的)來(lái)進(jìn)行替代處理,然后這4個(gè)字節(jié)結(jié)果中的第一個(gè)字節(jié)和輪常數(shù)相異或,這個(gè)輪常數(shù)是預(yù)先定義的,并且固定值。最后,為了得到第i輪密鑰,把得到的4個(gè)字節(jié)的結(jié)果和輪密鑰的最初4個(gè)字節(jié)按位相異或,得到i輪密鑰的最初4個(gè)字節(jié),然后又和密鑰的下面的4個(gè)字節(jié)按位相異或,得到i輪密鑰的下面4個(gè)字節(jié),以此類推。
2.2、SBox置換(SubBytes)

SBox稱為S盒,它是一個(gè)16×16的固定值的矩陣。sbox置換法則:將需要置換的矩陣的每個(gè)字節(jié)的低4位作為s盒的縱坐標(biāo),將其高4位作為s盒的橫坐標(biāo),使用這兩個(gè)值取得對(duì)應(yīng)的S盒中的值,作為置換后的值。
         bytes[0] = AseSbox[ bytes[0] >> 4][bytes[0] & 0x0f ];
         bytes[1] = AseSbox[ bytes[1] >> 4][bytes[1] & 0x0f ];
         bytes[2] = AseSbox[ bytes[2] >> 4][bytes[2] & 0x0f ];
         bytes[3] = AseSbox[ bytes[3] >> 4][bytes[3] & 0x0f ];
2.3、行循環(huán)移位(ShiftRows)
在行循環(huán)移位(ShiftRows)變換中,狀態(tài)陣列的后3行循環(huán)移位不同的偏移量。第1行循環(huán)移位C1字節(jié),第2行循環(huán)移位C2字節(jié),第3行循環(huán)移位C3字節(jié)。
偏移量C1、C2、C3與分組長(zhǎng)度Nb有關(guān),如下表所示:
NB
C1C2
C3
4 1 2 3
61
2 3
8 1 3 4









2.4
、伽洛瓦域運(yùn)算(GF2

在GF(2中用0x01的乘法是特殊的;它相當(dāng)于普通算術(shù)中用1做乘法并且結(jié)果也同樣—任何值乘0x01等于其自身,F(xiàn)在讓我們看看用0x02做乘法。和加法的情況相同,理論是深?yuàn)W的,但最終結(jié)果十分簡(jiǎn)單。只要被乘的值小于0x80,這時(shí)乘法的結(jié)果就是該值左移1比特位。如果被乘的值大于或等于0x80,這時(shí)乘法的結(jié)果就是用值0x1b異或后的值再左移1比特位。它防止了“域溢出”并保持乘法的乘積在范圍以內(nèi)。
一旦你在GF(2中用0x02建立了加法和乘法,你就可以用任何常量去定義乘法。用0x03做乘法時(shí),你可以將 0x03 分解為2的冪之和。為了用 0x03 乘以任意字節(jié)b,

因?yàn)?0x03 = 0x02 + 0x01,

因此:
              b * 0x03 = b * (0x02 + 0x01)
                       = (b * 0x02) + (b * 0x01)
這是可以行得通的,因?yàn)槟阒廊绾斡?0x02 和 0x01 相乘和相加。
在AES加密中用到的計(jì)算代碼如下:

Byte gfmultby01(const Byte b)

    {

         return b;

    }

    Byte gfmultby02(const Byte b)

    {

         return (b<< 1) ^ ff_tab[b >> 7];     

    }

    Byte gfmultby03(const Byte b)

    {

         return gfmultby02(b) ^ b ;

    }

    Byte gfmultby09(const Byte b)

    {

         return (gfmultby02(gfmultby02(gfmultby02(b))) ^b);

    }


    Byte gfmultby0b(const Byte b)

    {

         return (gfmultby02(gfmultby02(gfmultby02(b))) ^gfmultby02(b) ^b );

    }


    Byte gfmultby0d(const Byte b)

    {

         return (gfmultby02(gfmultby02(gfmultby02(b))) ^gfmultby02(gfmultby02(b))^(b));

    }


    Byte gfmultby0e(const Byte b)

    {

  return(gfmultby02(gfmultby02(gfmultby02(b)))^gfmultby02(gfmultby02(b))^gfmultby02(b));

}

2.5、列混合運(yùn)算(MixColumn)
MixColumn(列混合運(yùn)算)將狀態(tài)(State)的列看作是有限域GF(2上的多項(xiàng)式a(x),與多項(xiàng)式c(x) = 03 x3 + 01 x2 + 01 x +02相乘(x41)。

b(x) = c(x) × a(x),寫成矩陣形式為:



2.6、流程

  


3、AES加密的實(shí)現(xiàn)
代碼加上后,系統(tǒng)告訴我內(nèi)容過長(zhǎng),沒法只好略去,想知道代碼實(shí)現(xiàn)的請(qǐng)?jiān)L問  http://www.greewater.com/view.asp?id=18
我的微博:http://t.sina.com.cn/kingbir 歡迎大家交流。

評(píng)分

參與人數(shù) 2可用積分 +3 收起 理由
shang2010 + 1 高手偶像
zhujiang73 + 2

查看全部評(píng)分

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2011-03-03 09:22 |只看該作者
雖然看不懂,但還是要支持一下!

論壇徽章:
1
黑曼巴
日期:2020-02-27 22:54:26
3 [報(bào)告]
發(fā)表于 2011-03-03 09:52 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽

論壇徽章:
2
技術(shù)圖書徽章
日期:2013-09-04 15:21:51酉雞
日期:2013-11-01 21:20:20
4 [報(bào)告]
發(fā)表于 2011-03-03 10:09 |只看該作者
壇子里搞算法研究的寥寥無(wú)幾。這些算法會(huì)用就行了,而且都是公開的。

論壇徽章:
24
獅子座
日期:2013-12-31 10:48:0015-16賽季CBA聯(lián)賽之吉林
日期:2016-04-18 14:43:1015-16賽季CBA聯(lián)賽之北控
日期:2016-05-18 15:01:4415-16賽季CBA聯(lián)賽之上海
日期:2016-06-22 18:00:1315-16賽季CBA聯(lián)賽之八一
日期:2016-06-25 11:02:2215-16賽季CBA聯(lián)賽之佛山
日期:2016-08-17 22:48:2615-16賽季CBA聯(lián)賽之福建
日期:2016-12-27 22:39:272016科比退役紀(jì)念章
日期:2017-02-08 23:49:4315-16賽季CBA聯(lián)賽之八一
日期:2017-02-16 01:05:3415-16賽季CBA聯(lián)賽之山東
日期:2017-02-22 15:34:5615-16賽季CBA聯(lián)賽之上海
日期:2017-11-25 16:17:5015-16賽季CBA聯(lián)賽之四川
日期:2016-01-17 18:38:37
5 [報(bào)告]
發(fā)表于 2011-03-03 10:21 |只看該作者
回復(fù) 1# lanneret_sky


    我看看.

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2011-03-03 12:28 |只看該作者
居然是受冷遇

論壇徽章:
1
CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34
7 [報(bào)告]
發(fā)表于 2011-03-03 13:48 |只看該作者
支持!

論壇徽章:
24
獅子座
日期:2013-12-31 10:48:0015-16賽季CBA聯(lián)賽之吉林
日期:2016-04-18 14:43:1015-16賽季CBA聯(lián)賽之北控
日期:2016-05-18 15:01:4415-16賽季CBA聯(lián)賽之上海
日期:2016-06-22 18:00:1315-16賽季CBA聯(lián)賽之八一
日期:2016-06-25 11:02:2215-16賽季CBA聯(lián)賽之佛山
日期:2016-08-17 22:48:2615-16賽季CBA聯(lián)賽之福建
日期:2016-12-27 22:39:272016科比退役紀(jì)念章
日期:2017-02-08 23:49:4315-16賽季CBA聯(lián)賽之八一
日期:2017-02-16 01:05:3415-16賽季CBA聯(lián)賽之山東
日期:2017-02-22 15:34:5615-16賽季CBA聯(lián)賽之上海
日期:2017-11-25 16:17:5015-16賽季CBA聯(lián)賽之四川
日期:2016-01-17 18:38:37
8 [報(bào)告]
發(fā)表于 2011-03-03 15:52 |只看該作者
居然是受冷遇
lanneret_sky 發(fā)表于 2011-03-03 12:28



      不要著急,我來(lái)加分。  

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2011-03-03 16:19 |只看該作者
回復(fù) 8# zhujiang73

謝謝您!非常感謝!

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2011-03-03 16:20 |只看該作者
如何申請(qǐng)版主加精呀
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP