壓縮算法一覽

做了zip壓縮的功能後,突然對背後的原理和算法想了解下,於是學習總結如下:

 

 

 

具體的算法,可以先忽略,把每種算法的原理以及基本的數學知識先了解一遍,有興趣的話,然後對每一種算法再詳細學習和了解,甚至用程序去實現。

MD5

加密原理512位分組來處理輸入的信息,且每一分組又被劃分爲16個32位子分組,經過了一系列的處理後,算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成一個128位散列值。

 

大致算法步驟如下:

1、補位

   M爲原始數據,N表示分組數,M= N*512+448

2、初始化MD緩存器

 

A : 01 23 45 67

B:  89 ab cd ef

C:  fe dc ba 98

D: 76 54 32 10

 

3、數據處理

 

4個非線性函數F、G、H、I

 

RSA

加密原理:利用了單向函數正向求解很簡單,反向求解很複雜的特性

對兩個質數相乘容易,而將其合數分解很難的特點進行加密算法。N=p1*p2,已知p1、p2求n簡單,已知n求p1、p2困難

(m^e)mod n=c,已知m、e、n求c簡單,已知e、n、c求m很難

 

算法中用到的數學知識:

 2.1 關於互質關係

 

如果兩個正整數,除了1以外,沒有其他公因數,我們就稱這兩個數是互質關係

2.2 歐拉函數Φ(n)

任意給定正整數n,請問在小於等於n的正整數之中,有多少個與n構成互質關係?

計算這個值的方式叫做歐拉函數,使用Φ(n)表示

 

2.3 歐拉定理

如果兩個正整數m和n互質,那麼m的φ(n)次方減去1,可以被n整除。

 

 

 

2.4 費馬小定理

歐拉定理的特殊情況:如果兩個正整數m和n互質,而且n爲質數!那麼φ(n)結果就是n-1。
那麼也就是:

 

 

 

以上都是一些數學知識,作爲理解算法的鋪墊。

 

DES

DES密鑰長度爲56位,在形式上是一個64位數。DES以64位(8字節)爲分組對數據加密,每64位明文,經過16輪置換生成64位密文,其中每字節有1位用於奇偶校驗,所以實際有效密鑰長度是56位。3DES可提供更高的安全性,但相應地,計算速度更慢。

 

算法描述:

1)輸入64位明文數據,並進行初始置換IP;

2)在初始置換IP後,明文數據再被分爲左右兩部分,每部分32位,以L0,R0表示;

3) 在祕鑰的控制下,經過16輪運算(f);

4) 16輪後,左、右兩部分交換,並連接再一起,再進行逆置換;

5) 輸出64位密文。

 

AES

AES加密過程是在一個4×4的字節矩陣上運作,這個矩陣又稱爲state)”,其初值就是一個明文區塊算法過程中涉及到S盒變換、行變換、列變換等

備註:數學知識-矩陣,算法會經過多輪處理,如下圖所示:

 

 

 

ECC

什麼是ECC
ECC是Elliptic Curve Cryptography(橢圓曲線密碼學)的縮寫,是一種基於橢圓曲線數學的公開密鑰加密算法,其本質是利用離散對數問題實現加密。

 

什麼是橢圓曲線
Wolfram MathWorld(線上數學百科全書,http://mathworld.wolfram.com 給出了非常精準的定義:
一條橢圓曲線就是一組被 y^2 = x^3 + ax + b 定義的且滿足 4a^3 + 27b^2 ≠ 0 的點集。
4a^3 + 27b^2 ≠ 0 這個限定條件是爲了保證曲線不包含奇點(在數學中是指曲線上任意一點都存在切線)。
橢圓曲線示例圖:

 

 

 

 

不同的橢圓曲線對應不同的形狀(b=1,a從2到-3)

 

阿貝爾羣

阿貝爾羣的概念是抽象代數的基本概念之一,是一種代數結構,由一個集合以及一個二元運算所組成。
如果一個集合或者運算是羣的話,就必須滿足以下條件(+ 表示二元運算):
1、封閉性(closure),如果a和b被包含於羣,那麼a+b也一定是羣的元素;
2、結合律(associativity);
3、存在一個單位元(identity element)0,0與任意元素運算不改變其值的元素,即 a+0 = 0+a = a;
4、每個元素都存在一個逆元(inverse);
5、交換律(commutativity),即 a+b = b+a;

好了,數學知識鋪墊到這。

我在這裏拋磚引玉,做大概介紹,算法與數學關係太強了,用oop的思想來說,就是耦合度太高。因爲很多算法,就是數學家在一起研究出來的。普通的同學,可能對數學知識望而卻步,包括我在內。所以,一開始,我們沒有必要完全搞清楚,先了解,然後慢慢泡,泡久了,就熟悉了,最後做到理解。只有理解了,後面纔可能會應用好。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章