久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

算法背后的數(shù)學(xué)原理

 當(dāng)以讀書通世事 2018-03-10

任何一種互聯(lián)網(wǎng)大數(shù)據(jù)算法背后都有數(shù)學(xué)原理在支撐,無論是簡單的遞歸迭代或者是更復(fù)雜的加密算法,,都離不開數(shù)學(xué)原理,,為了更好地方便大家理解,我們以加密算法為例,,更好地闡述一下數(shù)學(xué)對算法的支持,。

1、對稱加密算法AES

AES 是 Advanced Encryption Standard 的縮寫,,是最常見的對稱加密算法,。AES 在密碼學(xué)中又稱 Rijndael 加密法,是美國聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn),。這個標(biāo)準(zhǔn)已經(jīng)被多方分析且廣為全世界所使用。

AES 的加密公式為 C=E(K,P),,其中K 為密鑰,,P 為明文,C 為密文,。

AES 加密明文的過程是:首先對明文進(jìn)行分組,,每組的長度都是 128 位,然后一組一組地加密,,直到所有明文都已加密,。密鑰的長度可以是 128、192 或 256 位,。

在加密函數(shù) E 中,,會執(zhí)行一個輪函數(shù),,除最后一次執(zhí)行不同外,前面幾輪的執(zhí)行是相同的,。以 AES-128 為例,,推薦加密輪數(shù)為 10 輪,即前 9 輪執(zhí)行的操作相同,,第 10 輪執(zhí)行的操作與前面不同,。不同的密鑰長度推薦的加密輪數(shù)是不一樣的,具體見下面的表格,。

算法背后的數(shù)學(xué)原理

加密時明文按照 128 位為單位進(jìn)行分組,,每組包含 16 個字節(jié),按照從上到下,、從左到右的順序排列成一個 4 × 4 的矩陣,,稱為明文矩陣。AES 的加密過程在一個大小同樣為 4 × 4 的矩陣中進(jìn)行,,稱為狀態(tài)矩陣,,狀態(tài)矩陣的初始值為明文矩陣的值。每一輪加密結(jié)束后,,狀態(tài)矩陣的值變化一次,。輪函數(shù)執(zhí)行結(jié)束后,狀態(tài)矩陣的值即為密文的值,,從狀態(tài)矩陣得到密文矩陣,,依次提取密文矩陣的值得到 128 位的密文。

算法背后的數(shù)學(xué)原理

以 128 位密鑰為例,,密鑰長度為 16 個字節(jié),,也用 4 × 4 的矩陣表示,順序也是從上到下,、從左到右,。AES 通過密鑰編排函數(shù)把密鑰矩陣擴(kuò)展成一個包含 44 個字的密鑰序列,其中的前 4 個字為原始密鑰用于初始加密,,后面的 40 個字用于 10 輪加密,,每輪使用其中的 4 個字。密鑰遞歸產(chǎn)生規(guī)則如下:

  • 如果 i 不是 4 的倍數(shù),,那么由等式 w[i] = w[i-4] ⊕ w[i-1] 確定,;

  • 如果 i 是 4 的倍數(shù),那么由等式 w[i] = w[i-4] ⊕ T(w[i-1]) 確定,;

加密的第 1 輪到第 9 輪的輪函數(shù)一樣,,包括 4 個操作:字節(jié)代換、行位移、列混合和輪密鑰加,。最后一輪迭代不執(zhí)行列混合,。另外,在第一輪迭代之前,,先將明文和原始密鑰進(jìn)行一次異或加密操作,。

解密過程仍為 10 輪,每一輪的操作是加密操作的逆操作,。由于 AES 的 4 個輪操作都是可逆的,,因此,解密操作的一輪就是順序執(zhí)行逆行移位,、逆字節(jié)代換,、輪密鑰加和逆列混合。同加密操作類似,,最后一輪不執(zhí)行逆列混合,,在第 1 輪解密之前,要執(zhí)行 1 次密鑰加操作,。

AES 加密的輪函數(shù)操作包括以下方面:

  • 字節(jié)代換 SubBytes:矩陣中的各字節(jié)通過一個 8 位的 S-box 進(jìn)行轉(zhuǎn)換,。這個步驟提供了加密法非線性的變換能力。S-box 與 GF(2^8)上的乘法反元素有關(guān),,已知具有良好的非線性特性,。為了避免簡單代數(shù)性質(zhì)的攻擊,S-box 結(jié)合了乘法反元素及一個可逆的仿射變換矩陣建構(gòu)而成,。此外在建構(gòu) S-box 時,,刻意避開了固定點(diǎn)與反固定點(diǎn),即以 S-box 替換字節(jié)的結(jié)果會相當(dāng)于錯排的結(jié)果,。


  • 行位移 ShiftRows:在此步驟中,,每一行都向左循環(huán)位移某個偏移量。在 AES 中(區(qū)塊大小 128位 ),,第一行維持不變,,第二行里的每個字節(jié)都向左循環(huán)移動一格。同理,,第三行及第四行向左循環(huán)位移的偏移量就分別是 2 和 3,。128 位和 192 位的區(qū)塊在此步驟的循環(huán)位移的模式相同。經(jīng)過 ShiftRows 之后,,矩陣中每一豎列,都是由輸入矩陣中的每個不同列中的元素組成,。Rijndael 算法的版本中,,偏移量和 AES 有少許不同;對于長度 256 比特的區(qū)塊,第一行仍然維持不變,,第二行,、第三行、第四行的偏移量分別是 1 字節(jié),、2 字節(jié),、3 字節(jié)。除此之外,,ShiftRows 操作步驟在 Rijndael 和 AES 中完全相同,。


  • 列混合 MixColumns:在 MixColumns 步驟,每一列的四個字節(jié)通過線性變換互相結(jié)合,。每一列的四個元素分別當(dāng)作 1 , x , x^2 , x^3 的系數(shù),,合并即為GF(2^8)中的一個多項(xiàng)式,接著將此多項(xiàng)式和一個固定的多項(xiàng)式 c(x)=3x^3+x^2+x+2 在 modulo x^4 + 1 下相乘,。此步驟亦可視為 Rijndael 有限域之下的矩陣乘法,。MixColumns 函數(shù)接受 4 個字節(jié)的輸入,輸出 4 個字節(jié),,每一個輸入的字節(jié)都會對輸出的四個字節(jié)造成影響,。因此 ShiftRows 和 MixColumns 兩步驟為這個密碼系統(tǒng)提供了擴(kuò)散性。


  • 輪密鑰加 AddRoundKey:回合密鑰將會與原矩陣合并,。在每次的加密循環(huán)中,,都會由主密鑰產(chǎn)生一把回合密鑰(通過 Rijndael 密鑰生成方案產(chǎn)生),這把密鑰大小會跟原矩陣一樣,,以與原矩陣中每個對應(yīng)的字節(jié)作異或(⊕)加法,。

算法背后的數(shù)學(xué)原理

2、非對稱加密算法RSA

1977 年三位數(shù)學(xué)家 Rivest,、Shamir 和 Adleman 設(shè)計了一種算法,,可以實(shí)現(xiàn)非對稱加密,也就是本文要討論的 RSA 算法,,使用非對稱加密算法需要生成公鑰和私鑰,,使用公鑰加密,使用私鑰解密,。

算法背后的數(shù)學(xué)原理

互質(zhì)關(guān)系:首先回顧一下質(zhì)數(shù)的定義,。質(zhì)數(shù) (prime number) 又稱素數(shù),有無限個,。一個大于 1 的自然數(shù),,除了 1 和它本身外,不能被其他自然數(shù)整除,,換句話說就是該數(shù)除了 1 和它本身以外不再有其他的因數(shù),;否則稱為合數(shù),如果兩個正整數(shù),除了 1 以外,,沒有其他公因子,,我們就稱這兩個數(shù)是互質(zhì)關(guān)系?;ベ|(zhì)關(guān)系不要求兩個數(shù)都是質(zhì)數(shù),,合數(shù)也可以和一個質(zhì)數(shù)構(gòu)成互質(zhì)關(guān)系。


歐拉函數(shù):對正整數(shù) n,,歐拉函數(shù)是小于 n 的正整數(shù)中與 n 互質(zhì)的數(shù)的數(shù)目,,用 φ(n) 表示。例如 φ(8) = 4,,因?yàn)?1 3 5 7 均和 8 互質(zhì),。歐拉函數(shù)可以表示為算法背后的數(shù)學(xué)原理

其中 p1, p2 …… pn 為 x 的所有質(zhì)因數(shù),x 是不為 0 的整數(shù),。且 φ(1) = 1,。每種質(zhì)因數(shù)只用一個。比如 12 = 2 * 2 * 3 那么

φ(12) = 12 * ( 1 - 1 / 2) * ( 1 - 1 / 3 ) = 4

若 n 是質(zhì)數(shù) p 的 k 次冪,,除了 p 的倍數(shù)外,,其他數(shù)都跟 n 互質(zhì),則數(shù)學(xué)公式為

算法背后的數(shù)學(xué)原理

若 m,n 互質(zhì),,則數(shù)學(xué)公式為

算法背后的數(shù)學(xué)原理

當(dāng) n 為奇數(shù)時,,則數(shù)學(xué)公式為

算法背后的數(shù)學(xué)原理

當(dāng) n 為質(zhì)數(shù)時,則數(shù)學(xué)公式為

算法背后的數(shù)學(xué)原理


算法背后的數(shù)學(xué)原理

模反元素:如果兩個正整數(shù) a 和 n 互質(zhì),,那么一定可以找到整數(shù) b,,使得 ab - 1 被 n 整除,或者說 ab 被 n 除的余數(shù)是 1,。這時,,b 就叫做 a 的 “模反元素”。表示如下:ab≡ 1 (mod n)

比如3 和 11 互質(zhì),,那么 3 的模反元素就是 4,,因?yàn)?(3 × 4) - 1 可以被 11 整除。顯然,,模反元素不止一個,,4 加減 11 的整數(shù)倍都是 3 的模反元素 {…, -18, -7, 4, 15, 26, …},即如果 b 是 a 的模反元素,,則 b + k n 都是 a 的模反元素,。


歐拉定理:歐拉定理是一個關(guān)于同余的性質(zhì)。歐拉定理表明,,若 n,a 為正整數(shù),,且 n,a 互質(zhì),,則有

a^φ(n) ≡ 1 (mod n)

假設(shè)正整數(shù) a 與質(zhì)數(shù) p 互質(zhì),因?yàn)?φ(p) = p-1,,則歐拉定理可以寫成

a^(p-1) ≡ 1 (mod p)


RSA 公鑰與私鑰的生成:

生成密鑰的過程如下:

  1. 首先選擇兩個質(zhì)數(shù) p 和 q,并且越大越好,。

  2. 計算出 n = pq ,,n 的二進(jìn)制位數(shù)即為密鑰的位數(shù)。

  3. 計算出 n 的歐拉函數(shù)

    φ(n) = φ(p)φ(q) = (p-1) (q-1)

  4. 隨機(jī)選擇一個整數(shù) e,,條件是 1 < e="">< φ(n),,且="" e="" 與="" φ(n)="">

  5. 計算 e 對于 φ(n) 的模反元素 d

    ed ≡ 1 (mod φ(n))

    上面的公式等價于如下的一元二次方程,d 和 k 有無窮多種組合方式,,選取一個 d 值即可

    ed + k φ(n) = 1

  6. 將 n 和 e 封裝成公鑰,,n 和 d 封裝成私鑰


RSA 加密與解密:

使用公鑰 (n,e) 進(jìn)行加密的過程,可以表示為如下公式,,實(shí)際上就是根據(jù)明文 m

計算出密文 c 的過程,。m 必須是整數(shù)(字符串可以取 ascii 值或 unicode 值),且 m 必須小于 n,。

m^e ≡ c (mod n)

使用私鑰 (n,d) 進(jìn)行解密的過程,,可以表示為如下公式,實(shí)際上就是根據(jù)密文 c 計算出明文 m 的過程,。此處證明比較復(fù)雜,,感興趣的朋友可以自己看一下。

c^d ≡ m (mod n)


RSA 加解密過程示例:

首先生成密鑰:

  1. 取 p = 61, q = 53

  2. 計算出 n = 61 * 53 = 3233

  3. 計算出 n 的歐拉函數(shù) φ(3233) = 60 * 52 = 3120

  4. 隨機(jī)選擇一個整數(shù) e = 17

  5. 計算 e 對于 φ(n) 的模反元素 d = 2753

使用公鑰進(jìn)行加密,,假設(shè)明文 m = 65,,表示大寫字母 A,根據(jù)公式計算出密文為 2790,。

65^17 ≡ 2790 (mod 3233)

使用私鑰進(jìn)行解密,,密文為 2790,根據(jù)公式可以計算出明文為 65,,表示大寫字母 A,。

2790^2753 ≡ 65 (mod 3233)

3、總結(jié)

數(shù)學(xué)是大數(shù)據(jù)算法的后臺支持,,如果你真的想從事IT,、人工智能行業(yè),那么學(xué)好數(shù)學(xué)是不可缺少的,,從現(xiàn)在開始努力吧,!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多