數字摘要也稱爲消息摘要,它是一個惟一對應一個消息或文本的固定長度的值,它由一個單向Hash函數對消息進行計算而產生。若是消息在傳遞的途中改變了,接收者經過對收到消息採用相同的Hash從新計算,新產生的摘要與原摘要進行比較,就可知道消息是否被篡改了,所以消息摘要可以驗證消息的完整性。消息摘要採用單向Hash函數將須要計算的內容"摘要"成固定長度的串,這個串亦稱爲數字指紋。這個串有固定的長度,且不一樣的明文摘要成密文,其結果老是不一樣的(相對的),而一樣的明文其摘要一定一致。這樣這串摘要即可成爲驗證實文是不是"真身"的"指紋"了算法
MD5即Message Digest Algorithm 5(信息摘要算法5),是數字摘要算法一種實現,用於確保信息傳輸完整性和一致性,摘要長度爲128位。 MD5由MD四、 MD三、 MD2改進而來,主要加強算法複雜度和不可逆性,該算法因其廣泛、穩定、快速的特色,在產業界獲得了極爲普遍的使用,目前主流的編程語言廣泛都已有MD5算法實現。編程
SHA的全稱是Secure Hash Algorithm,即安全散列算法。 1993年,安全散列算法(SHA)由美國國家標準和技術協會( NIST)提出,並做爲聯邦信息處理標準(FIPS PUB 180)公佈, 1995年又安全
發佈了一個修訂版FIPS PUB 180-1,一般稱之爲SHA-1。 SHA-1是基於MD4算法的,如今已成爲公認的最安全的散列算法之一,並被普遍使用。SHA-1算法生成的摘要信息的長度爲160位,因爲生成的摘要信息更長,運算的過程更加複雜,在相同的硬件上, SHA-1的運行速度比MD5更慢,可是也更爲安全。編程語言
對稱加密算法是應用較早的加密算法,技術成熟。在對稱加密算法中,數據發送方將明文(原始數據)和加密密鑰一塊兒通過特殊加密算法處理後,生成複雜的加密密文進行發送,數據接收方收到密文後,若想讀取原文,則須要使用加密使用的密鑰及相同算法的逆算法對加密的密文進行解密,才能使其恢復成可讀明文。在對稱加密算法中,使用的密鑰只有一個,發送和接收雙方都使用這個密鑰對數據進行加密和解密,這就要求加密和解密方事先都必須知道加密的密鑰。函數
1973 年,美國國家標準局(NBS)在認識到創建數據保護標準既明顯又急迫的狀況下,開始徵集聯邦數據加密標準的方案。 1975 年3月17日, NBS公佈了IBM公司提供的密碼算法,以標準建議的形式在全國範圍內徵求意見。通過兩年多的公開討論以後, 1977 年7月15日, NBS宣佈性能
接受這建議,做爲聯邦信息處理標準46 號數據加密標準(Data Encryptin Standard)DES算法屬於對稱加密算法,明文按64位進行分組,密鑰長64位,但事實上只有56位參與DES運算(第八、 1六、 2四、 3二、 40、 4八、 5六、 64位是校驗位,使得每一個密鑰都有奇數個1),分組後的明文和56位的密鑰按位替代或交換的方法造成密文。因爲計算機運算能力的加強,原版DES密碼的密鑰長度變得容易被暴力破解,所以演變出了3DES算法。 3DES是DES向AES過渡的加密算法,它使用3條56位的密鑰對數據進行三次加密,是DES的一個更安全的變形。加密
AES的全稱是Advanced Encryption Standard,即高級加密標準,該算法由比利時密碼學家Joan Daemen和Vincent Rijmen所設計,結合兩位做者的名字,又稱Rijndael加密算法,是美國聯邦政府採用的一種對稱加密標準,這個標準用來替代原先的DES算法,已經廣爲全世界所使用,已然成爲對稱加密算法中最流行的算法之一。AES算法做爲新一代的數據加密標準匯聚了強安全性、高性能、高效率、易用和靈活等優勢,設計有三個密鑰長度:128,192,256位,比DES算法的加密強度更高,更爲安全。設計
非對稱加密算法又稱爲公開密鑰加密算法,它須要兩個密鑰,一個稱爲公開密鑰(public key),即公鑰,另外一個稱爲私有密鑰(private key),即私鑰。公鑰與私鑰須要配對使用,若是用公鑰對數據進行加密,只有用對應的私鑰才能進行解密,而若是使用私鑰對數據進行加密,那麼只有用對應的公鑰才能進行解密。由於加密和解密使用的是兩個不一樣的密鑰,因此這種算法稱爲非對稱加密算法。非對稱加密算法實現機密信息交換的基本過程是:甲方生成一對密鑰並將其中的一把做爲公鑰向其它人公開,獲得該公鑰的乙方使用該密鑰對機密信息進行加密後再發送給甲方,甲方再使用本身保存的另外一把專用密鑰,即私鑰,對加密後的信息進行解密。開發
RSA非對稱加密算法是1977年由Ron Rivest、 Adi Shamirh和LenAdleman開發的, RSA取名來自開發他們三者的名字。 RSA是目前最有影響力的非對稱加密算法,它可以抵抗到目前爲止已知的全部密碼攻擊,已被ISO推薦爲公鑰數據加密標準。 RSA算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但反過來想要對其乘積進行因式分解卻極其困難,所以能夠將乘積公開做爲加密密鑰。it