天天看點

密碼學相關概念

摘要算法是一種能産生特殊輸出格式的算法,這種算法的特點是:無論使用者輸入什麼長度的原始資料,經過計算後輸出的密文都是固定長度的,這種算法的原理是根據一定的運算規則對原資料進行某種形式的提取,這種提取就是摘要,被摘要的資料内容與原資料有密切聯系,隻要原資料稍有改變,輸出的“摘要”便完全不同,是以,基于這種原理的算法便能對資料完整性提供較為健全的保障。但是,由于輸出的密文是提取原資料經過處理的定長值,是以它已經不能還原為原資料,即消息摘要算法是不可逆的,理論上無法通過反向運算取得原資料内容,是以它通常隻能被用來做資料完整性驗證。

如今常用的“消息摘要”算法經曆了多年驗證發展而保留下來的算法已經不多,這其中包括MD2、MD4、MD5、SHA、SHA-1/256/383/512等。

常用的摘要算法主要有MD5和SHA1。D5的輸出結果為16位元組,sha1的輸出結果為20位元組。

(message digest algorithms)

資料摘要算法是密碼學算法中非常重要的一個分支,它通過對所有資料提取指紋資訊以實作資料簽名、資料完整性校驗等功能,由于其不可逆性,有時候會被用做敏感資訊的加密。資料摘要算法也被稱為哈希(Hash)算法、雜湊演算法。

分類:

1、CRC8、CRC16、CRC32

2、MD2 、MD4、MD5(Message-Digest Algorithm 5)

3、SHA1、SHA256、SHA384、SHA512

4、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實際上是一種回報模式,目的也是增強破解的難度。

一個奔跑的程式員