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