加密算法
數據加密算法有對稱加密、非對稱加密和信息摘要三類。
對稱加密是使用單個密鑰對數據進行加密和解密。有DES、AES、RC-5等算法。
非對稱加密是使用一對密鑰(公鑰和私鑰)對數據進行加密和解密。有RSA、ECC等算法。非對稱加密大概比對稱加密慢100倍以上。
通常的用法如下:
- 使用公鑰加密數據,使用私鑰解密數據。
- 使用私鑰簽名數據,使用公鑰驗證簽名。
信息摘要如果也算加密算法的話,它的加密過程不需要密鑰,并且經過加密的數據無法被解密,它是根據不定長的明文計算得到一段定長的數據。有MD5、SHA1等算法。
密鑰規范
規范太多,網上講得很亂,挑常用的按我的理解列一下。
密鑰格式:
- X.509:通用的證書格式,包括公鑰信息、用戶標識、簽發信息等。
- PKCS系統標準:美國RSA數據安全公司及其合作伙伴制定的一組公鑰密碼學標準。其中PKCS#8描述私有密鑰的信息格式,包括私鑰及可選的屬性集等。
密鑰存儲:
- DER:二進制編碼。
- PEM:ASCII編碼。
加密模式
塊密碼自身只能加密長度等于密碼塊長度的單塊數據,若要對變長數據進行加密,則必須事先將數據進行切分,而且最后一個數據塊需要適當的填充方式擴展到密碼塊的長度。加密模式即塊密碼的工作模式,就是使用這些方式用同一個密鑰對多于一塊的數據進行加密。
加密模式通常用于對稱加密,也可以用于非對稱加密。但非對稱加密通常不適合加密較長的信息,所以會使用混合加密代替。
ps: 以RSA和DES為例,混合加密通常使用DES先加密明文,再使用RSA的公鑰加密DES的密鑰,再將2個密文一起傳遞出去。接收方使用RSA的私鑰解密DES的密鑰信息,再使用DES的密鑰解密具體內容。
最簡單的加密模式是ECB(即電子密碼本)。其他還有CBC、PCBC、CFB等。
ECB和CBC需要對最后一塊進行填充,填充方法有很多種,最簡單的是先在明文的最后填充空字符,使明文長度為密碼塊長度的整數倍。
微信訂閱號:
源文地址:http://blog.gopersist.com/2015/04/08/crypto/