一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP實現(xiàn)的AES加密、解密封裝類與用法示例

PHP實現(xiàn)的AES加密、解密封裝類與用法示例

2019-09-16 16:28u011474028 PHP教程

這篇文章主要介紹了PHP實現(xiàn)的AES加密、解密封裝類與用法,結合實例形式分析了php封裝的aes加密解密操作類及相關使用技巧,需要的朋友可以參考下

本文實例講述了PHP實現(xiàn)的AES加密、解密封裝類與用法。分享給大家供大家參考,具體如下:

<?php
/**
 * Class AES
 * 用于AES加解密數(shù)據(jù)
 * time:2018-04-27
 */
class AES
{
  protected $cipher = MCRYPT_RIJNDAEL_256; //AES加密算法
  protected $mode = MCRYPT_MODE_CBC; //采用cbc加密模式
  protected $key; //密鑰
  protected $iv; //cbc模式加密向量,如為空將采用密鑰代替
  /**
   * AES constructor.
   *
   * @param   $key 密鑰
   * @param null $iv 向量 可選 如為空將采用密鑰代替
   *
   * @throws Exception
   */
  public function __construct($key, $iv = NULL)
  {
    if (!extension_loaded("mcrypt")) {
//      throw new \Exception("mcrypt extension do not exist. it was DEPRECATED in PHP 7.1.0, and REMOVED in PHP 7.2.0. use OpenSSL instead");
    }
    $this->key = $key;
    $this->iv = $iv;
  }
  /**
   * 加密數(shù)據(jù)
   * @param $data
   *
   * @return string
   */
  public function encrypt($data)
  {
    $td = mcrypt_module_open($this->cipher, '', $this->mode, '');
    $key = hash("sha256", $this->key, true);
    $iv = isset($this->iv) ? hash("sha256", $this->iv, true) : $key;
    $data = $this->padding($data);
    mcrypt_generic_init($td, $key, $iv);
    $encryptedData = base64_encode(mcrypt_generic($td, $data));
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    return $encryptedData;
  }
  /**
   * 解密數(shù)據(jù)
   * @param $data
   *
   * @return bool|string
   */
  public function decrypt($data)
  {
    $td = mcrypt_module_open($this->cipher, '', $this->mode, '');
    $key = hash("sha256", $this->key, true);
    $iv = isset($this->iv) ? hash("sha256", $this->iv, true) : $key;
    mcrypt_generic_init($td, $key, $iv);
    $decrypted_data = mdecrypt_generic($td, base64_decode($data));
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    return $this->unPadding($decrypted_data);
  }
  /**
   * 填充數(shù)據(jù)到分組大小的整數(shù)倍
   * @param null $data
   *
   * @return string
   */
  protected function padding($data = null)
  {
    $blockSize = 32; //MCRYPT_RIJNDAEL_256算法的分組大小是32字節(jié)
    $pad = $blockSize - (strlen($data) % $blockSize);
    return $data . str_repeat(chr($pad), $pad);
  }
  /**
   * 去掉填充的數(shù)據(jù)
   * @param null $data
   *
   * @return bool|string
   */
  protected function unPadding($data = null)
  {
    $pad = ord($data[strlen($data) - 1]);
    if ($pad > strlen($data)) {
      return false;
    }
    if (strspn($data, chr($pad), strlen($data) - $pad) != $pad) {
      return false;
    }
    return substr($data, 0, -1 * $pad);
  }
  /**
   * @return mixed
   */
  public function getSecretKey()
  {
    return $this->key;
  }
  /**
   * @param mixed $key
   */
  public function setSecretKey($key)
  {
    $this->key = $key;
  }
  /**
   * @return null
   */
  public function getIv()
  {
    return $this->iv;
  }
  /**
   * @param null $iv
   */
  public function setIv($iv)
  {
    $this->iv = $iv;
  }
}
//使用方法:
$keyStr = 'sq8f77fwhksk';
$aes = new AES($keyStr);
$str = 'www.ythuaji.com.cn';
$chgstr = $aes->encrypt($str);
echo $chgstr;
echo "<br/>";
$rstr = $aes->decrypt($chgstr);
echo $rstr;
?>

運行結果:

pDyiRRNaxlss2b6SgoiVPdkD2m1QWhX393lh2iFgGdY=
www.ythuaji.com.cn

希望本文所述對大家PHP程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲天堂影视 | 99久久免费看国产精品 | 成年人在线视频免费观看 | 成人网视频免费播放 | 亚洲国产五月综合网 | 99久久伊人精品波多野结衣 | 果冻传媒在线视频播放观看 | 国产一二在线观看视频网站 | 国产精品制服丝袜白丝www | 国产精品va在线观看手机版 | 99热在线只有精品 | 精品手机在线1卡二卡3卡四卡 | 啊啊啊好爽在线观看 | 国产精品女主播自在线拍 | 欧美xxxxxbb | 九九99香蕉在线视频美国毛片 | 小草观看免费高清视频 | 天美影视传媒mv直接看 | 俄罗斯图书馆无打码久久 | 万域之王在线观看 | 亚洲视频在线一区二区三区 | 国产精品久久久久久爽爽爽 | 欧美一级专区免费大片 | 男女性刺激爽爽免费视频 | 国产一区二区免费福利片 | 国产日韩精品一区二区在线观看 | 午夜AV亚洲一码二中文字幕青青 | 按摩院已婚妇女中文字幕 | 特黄特色大片免费视频大全 | 麻豆小视频在线观看 | 办公室的秘密在线观看 | 色噜噜亚洲男人的天堂www | 亚洲精品高清中文字幕完整版 | 久久中文字幕无线观看 | 国产精品一区二区三区免费视频 | 亚洲国产精品久久网午夜小说 | 欧美日韩一级视频 | 美女和男人一起差差 | 2019nv天堂香蕉在线观看 | 丝瓜视频黄色在线观看 | 调教扩张宫颈女人惨叫 |