摘要算法html
摘要算法是一種能產生特殊輸出格式的算法,這種算法的特色是:不管用戶輸入什麼長度的原始數據,通過計算後輸出的密文都是固定長度的,這種算法的原理是根據必定的運算規則對原數據進行某種形式的提取,這種提取就是摘要,被摘要的數據內容與原數據有密切聯繫,只要原數據稍有改變,輸出的「摘要」便徹底不一樣,所以,基於這種原理的算法便能對數據完整性提供較爲健全的保障。可是,因爲輸出的密文是提取原數據通過處理的定長值,因此它已經不能還原爲原數據,即消息摘要算法是不可逆的,理論上沒法經過反向運算取得原數據內容,所以它一般只能被用來作數據完整性驗證。算法
現在經常使用的「消息摘要」算法經歷了多年驗證發展而保留下來的算法已經很少,這其中包括MD二、MD四、MD五、SHA、SHA-1/256/383/512等。安全
經常使用的摘要算法主要有MD5和SHA1。D5的輸出結果爲16字節,sha1的輸出結果爲20字節。網絡
摘要算法(message digest algorithms)數據結構
數據摘要算法是密碼學算法中很是重要的一個分支,它經過對全部數據提取指紋信息以實現數據簽名、數據完整性校驗等功能,因爲其不可逆性,有時候會被用作敏感信息的加密。數據摘要算法也被稱爲哈希(Hash)算法、散列算法。post
分類:加密
一、CRC八、CRC1六、CRC32url
二、MD2 、MD四、MD5(Message-Digest Algorithm 5)spa
三、SHA一、SHA25六、SHA38四、SHA512.net
四、RIPEMD、PANAMA、TIGER、ADLER32 等
對稱加密(也叫私鑰加密)指加密和解密使用相同密鑰的加密算法。有時又叫傳統密碼算法,就是加密密鑰可以從解密密鑰中推算出來,同時解密密鑰也能夠從加密密鑰中推算出來。而在大多數的對稱算法中,加密密鑰和解密密鑰是相同的,因此也稱這種加密算法爲祕密密鑰算法或單密鑰算法。它要求發送方和接收方在安全通訊以前,商定一個密鑰。對稱算法的安全性依賴於密鑰,泄漏密鑰就意味着任何人均可以對他們發送或接收的消息解密,因此密鑰的保密性對通訊性相當重要。
特色:
對稱加密算法的特色是算法公開、計算量小、加密速度快、加密效率高。
具體算法:AES算法,DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。
非對稱加密爲數據的加密與解密提供了一個很是安全的方法,它使用了一對密鑰,公鑰(public key)和私鑰(private key)。私鑰只能由一方安全保管,不能外泄,而公鑰則能夠發給任何請求它的人。非對稱加密使用這對密鑰中的一個進行加密,而解密則須要另外一個密鑰。好比,你向銀行請求公鑰,銀行將公鑰發給你,你使用公鑰對消息加密,那麼只有私鑰的持有人--銀行才能對你的消息解密。與對稱加密不一樣的是,銀行不須要將私鑰經過網絡發送出去,所以安全性大大提升。
特色:
算法強度複雜、安全性依賴於算法與密鑰可是因爲其算法複雜,而使得加密解密速度沒有對稱加密解密的速度快。對稱密碼體制中只有一種密鑰,而且是非公開的,若是要解密就得讓對方知道密鑰。因此保證其安全性就是保證密鑰的安全,而非對稱密鑰體制有兩種密鑰,其中一個是公開的,這樣就能夠不須要像對稱密碼那樣傳輸對方的密鑰了。這樣安全性就大了不少。
主要算法:RSA、Elgamal、揹包算法、Rabin、HD,ECC(橢圓曲線加密算法)。
(1) 對稱加密加密與解密使用的是一樣的密鑰,因此速度快,但因爲須要將密鑰在網絡傳輸,因此安全性不高。
(2) 非對稱加密使用了一對密鑰,公鑰與私鑰,因此安全性高,但加密與解密速度慢。
(3) 解決的辦法是將對稱加密的密鑰使用非對稱加密的公鑰進行加密,而後發送出去,接收方使用私鑰進行解密獲得對稱加密的密鑰,而後雙方可使用對稱加密來進行溝通。
對稱加密又分爲分組加密和序列密碼。
分組密碼,也叫塊加密(block cyphers),一次加密明文中的一個塊。是將明文按必定的位長分組,明文組通過加密運算獲得密文組,密文組通過解密運算(加密運算的逆運算),還原成明文組。
序列密碼,也叫流加密(stream cyphers),一次加密明文中的一個位。是指利用少許的密鑰(制亂元素)經過某種複雜的運算(密碼算法)產生大量的僞隨機位流,用於對明文位流的加密。
在分組加密算法中,有ECB,CBC,CFB,OFB這幾種算法模式。
ECB:是一種基礎的加密方式,密文被分割成分組長度相等的塊(不足補齊),而後單獨一個個加密,一個個輸出組成密文。CBC:是一種循環模式,前一個分組的密文和當前分組的明文異或操做後再加密,這樣作的目的是加強破解難度。CFB/OFB其實是一種反饋模式,目的也是加強破解的難度。