php加密AES类
<?php /** * AES类 * Class Aes */ class Aes { public $resultArr = [ 'status' => true, 'code' => 200, 'info' => '', ]; public function __construct() { } /** * 加密 * @param $string * @param $key * @param $cipherMethod * @return array */ public function encrypt($string, $key, $cipherMethod) { try { // 待加密的明文信息数据 $string = trim($string); // 秘钥 $key = substr(openssl_digest(openssl_digest($key, 'sha1', true), 'sha1', true), 0, 16); // 密码学方式 $cipherMethod = trim($cipherMethod); if ('' === $string) { $errorLogDataArr = []; $code = SysConst::ERR_EMPTY; $message = '加密内容不能为空'; throw new Exception($message, $code, new Exception(json_encode($errorLogDataArr), $code)); } if (!in_array($cipherMethod, openssl_get_cipher_methods())) { $errorLogDataArr = []; $code = SysConst::ERR_DATA_INVALID; $message = '密码学方式不正确'; throw new Exception($message, $code, new Exception(json_encode($errorLogDataArr), $code)); } $cipherText = openssl_encrypt($string, $cipherMethod, $key, OPENSSL_RAW_DATA); if (false === $cipherText) { $errorLogDataArr = []; $code = SysConst::ERR_FAILED; $message = 'AES加密失败'; throw new Exception($message, $code, new Exception(json_encode($errorLogDataArr), $code)); } $cipherText = strtolower(bin2hex($cipherText)); $this->resultArr['info'] = $cipherText; } catch (Exception $e) { $this->setErrorInfo($e); } return $this->resultArr; } /** * 解密 * @param $cipherText * @param $key * @param $cipherMethod * @return array */ public function decrypt($cipherText, $key, $cipherMethod) { try { // 待解密的信息数据 $cipherText = hex2bin($cipherText); // 秘钥 $key = substr(openssl_digest(openssl_digest($key, 'sha1', true), 'sha1', true), 0, 16); // 密码学方式 $cipherMethod = trim($cipherMethod); if ('' === $cipherText) { $errorLogDataArr = []; $code = SysConst::ERR_EMPTY; $message = '解密内容不能为空'; throw new Exception($message, $code, new Exception(json_encode($errorLogDataArr), $code)); } if (!in_array($cipherMethod, openssl_get_cipher_methods())) { $errorLogDataArr = []; $code = SysConst::ERR_DATA_INVALID; $message = '密码学方式不正确'; throw new Exception($message, $code, new Exception(json_encode($errorLogDataArr), $code)); } $decryptText = openssl_decrypt($cipherText, $cipherMethod, $key, OPENSSL_RAW_DATA); if (false === $decryptText) { $errorLogDataArr = []; $code = SysConst::ERR_FAILED; $message = 'AES解密失败'; throw new Exception($message, $code, new Exception(json_encode($errorLogDataArr), $code)); } $this->resultArr['info'] = $decryptText; } catch (Exception $e) { $this->setErrorInfo($e); } return $this->resultArr; } protected function setErrorInfo(Exception $e) { $this->resultArr['status'] = false; $this->resultArr['code'] = $e->getCode(); $this->resultArr['info'] = $e->getMessage(); } }