摘要:下文中我們將分別使用和來實(shí)現(xiàn)加解密,二者同步加解密的要點(diǎn)為使用何種填充算法。下面我們給出填充算法的實(shí)現(xiàn)填充算法移去填充算法默認(rèn)使用自動(dòng)對(duì)待加密數(shù)據(jù)進(jìn)行填充以對(duì)齊加密算法數(shù)據(jù)塊長(zhǎng)度。需固定使用,并通過調(diào)整的長(zhǎng)度,來實(shí)現(xiàn)加密算法。
對(duì)稱加解密算法中,當(dāng)前最為安全的是 AES 加密算法(以前應(yīng)該是是 DES 加密算法),PHP 提供了兩個(gè)可以用于 AES 加密算法的函數(shù)簇:Mcrypt 和 OpenSSL。
其中 Mcrypt 在 PHP 7.1.0 中被 Deprecated,在 PHP 7.2.0 中被移除,所以即可起你應(yīng)該使用 OpenSSL 來實(shí)現(xiàn)?AES 的數(shù)據(jù)加解密。
在一些場(chǎng)景下,我們不能保證兩套通信系統(tǒng)都使用了相函數(shù)簇去實(shí)現(xiàn)加密算法,可能 siteA 使用了最新的 OpenSSL 來實(shí)現(xiàn)了 AES 加密,但作為第三方服務(wù)的 siteB 可能仍在使用 Mcrypt 算法,這就要求我們必須清楚 Mcrypt 同 OpenSSL 之間的差異,以便保證數(shù)據(jù)加解密的一致性。
下文中我們將分別使用 Mcrypt 和 OpenSSL 來實(shí)現(xiàn)?AES-128/192/256-CBC 加解密,二者同步加解密的要點(diǎn)為:
1、使用何種填充算法。Mcrypt 自動(dòng)使用 NUL("