從一家做shopex,ecstore的公司到一家做b2b的ecshop的公司...來(lái)了就要實(shí)戰(zhàn),其他的不說(shuō)了,先來(lái)了解什么是php的aes加密吧?
aes(高級(jí)加密標(biāo)準(zhǔn)),AES的區(qū)塊長(zhǎng)度固定為128 比特,密鑰長(zhǎng)度則可以是128,192或256比特;是一個(gè)可逆的加密方式,同md5不同。
AES分為幾種模式,比如ECB,CBC,CFB等等,這些模式除了ECB由于沒有使用IV而不太安全,其他模式差別并沒有太明顯,大部分的區(qū)別在IV和KEY來(lái)計(jì)算密文的方法略有區(qū)別。
iv的作用?
IV稱為初始向量,不同的IV加密后的字符串是不同的,加密和解密需要相同的IV,既然IV看起來(lái)和key一樣,卻還要多一個(gè)IV的目的,對(duì)于每個(gè)塊來(lái)說(shuō),key是不變的,但是只有第一個(gè)塊的IV是用戶提供的,其他塊IV都是自動(dòng)生成。
IV的長(zhǎng)度為16字節(jié)。超過(guò)或者不足,可能實(shí)現(xiàn)的庫(kù)都會(huì)進(jìn)行補(bǔ)齊或截?cái)?。但是由于塊的長(zhǎng)度是16字節(jié),所以一般可以認(rèn)為需要的IV是16字節(jié)。
到現(xiàn)在對(duì)aes有了一定的了解,就開始上代碼吧。
<?phpclass cryptaes{ protected $cipher = MCRYPT_RIJNDAEL_128; protected $mode = MCRYPT_MODE_ECB; protected $pad_method = ''; protected $secret_key = ''; protected $iv = ''; public function set_cipher($cipher) { $this->cipher = $cipher; } public function set_mode($mode) &nbs