密碼算法主要分為三類:對稱密碼算法、非對稱密碼算法、摘要算法。
一、對稱密碼算法(Symmetric-key Algorithm)
對稱算法是指加密秘鑰和解密秘鑰相同的密碼算法,又稱為秘密秘鑰算法或單密鑰算法。
該算法又分為分組密碼算法(Block cipher)和流密碼算法(Stream cipher)。
分組密碼算法
又稱塊加密算法
加密步驟一:將明文拆分為N個固定長度的明文塊
加密步驟二:用相同的秘鑰和算法對每個明文塊加密得到N個等長的密文塊
加密步驟三:然后將N個密文塊按照順序組合起來得到密文
流密碼算法
又稱序列密碼算法
加密:每次只加密一位或一字節(jié)明文
解密:每次只解密一位或一字節(jié)密文
常見的分組密碼算法包括AES、SM1(國密)、SM4(國密)、DES、3DES、IDEA、RC2等;常見的流密碼算法包括RC4等。
AES:目前安全強(qiáng)度較高、應(yīng)用范圍較廣的對稱加密算法
SM1:國密,采用硬件實(shí)現(xiàn)
SM4:國密,可使用軟件實(shí)現(xiàn)
DES/3DES:已被淘汰或逐步淘汰的常用對稱加密算法
二、非對稱密碼算法(Asymmetric-key Algorithm)
非對稱算法是指加密秘鑰和解密秘鑰不同的密碼算法,又稱為公開密碼算法或公鑰算法,該算法使用一個秘鑰進(jìn)行加密,用另外一個秘鑰進(jìn)行解密。
加密秘鑰可以公開,又稱為公鑰
解密秘鑰必須保密,又稱為私鑰
常見非對稱算法包括RSA、SM2(國密)、DH、DSA、ECDSA、ECC等。
三、摘要算法(Digest Algorithm)
摘要算法是指把任意長度的輸入消息數(shù)據(jù)轉(zhuǎn)化為固定長度的輸出數(shù)據(jù)的一種密碼算法,又稱為散列函數(shù)、哈希函數(shù)、雜湊函數(shù)、單向函數(shù)等。
摘要算法所產(chǎn)生的固定長度的輸出數(shù)據(jù)稱為摘要值、散列值或哈希值,摘要算法無秘鑰。
摘要算法通常用來做數(shù)據(jù)完整性的判定,即對數(shù)據(jù)進(jìn)行哈希計(jì)算然后比較摘要值是否一致。
摘要算法主要分為三大類:MD(Message Digest,消息摘要算法)、SHA-1(Secure Hash Algorithm,安全散列算法)和MAC(Message Authentication Code,消息認(rèn)證碼算法);另國密標(biāo)準(zhǔn)SM3也屬于摘要算法。
MD系列主要包括MD2、MD4、MD5
SHA系列主要包括SHA-1、SHA-2系列(SHA-1的衍生算法,包含SHA-224、SHA-256、SHA-384、SHA-512)
MAC系列主要包括HmacMD5、HmacSHA1、HmacSHA256、HmacSHA384和HmacSHA512算法