激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

香港云服务器
服務器之家 - 編程語言 - PHP教程 - PHP實現的AES加密、解密封裝類與用法示例

PHP實現的AES加密、解密封裝類與用法示例

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

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

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

001<?php
002/**
003 * Class AES
004 * 用于AES加解密數據
005 * time:2018-04-27
006 */
007class AES
008{
009  protected $cipher = MCRYPT_RIJNDAEL_256; //AES加密算法
010  protected $mode = MCRYPT_MODE_CBC; //采用cbc加密模式
011  protected $key; //密鑰
012  protected $iv; //cbc模式加密向量,如為空將采用密鑰代替
013  /**
014   * AES constructor.
015   *
016   * @param   $key 密鑰
017   * @param null $iv 向量 可選 如為空將采用密鑰代替
018   *
019   * @throws Exception
020   */
021  public function __construct($key, $iv = NULL)
022  {
023    if (!extension_loaded("mcrypt")) {
024//      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");
025    }
026    $this->key = $key;
027    $this->iv = $iv;
028  }
029  /**
030   * 加密數據
031   * @param $data
032   *
033   * @return string
034   */
035  public function encrypt($data)
036  {
037    $td = mcrypt_module_open($this->cipher, '', $this->mode, '');
038    $key = hash("sha256", $this->key, true);
039    $iv = isset($this->iv) ? hash("sha256", $this->iv, true) : $key;
040    $data = $this->padding($data);
041    mcrypt_generic_init($td, $key, $iv);
042    $encryptedData = base64_encode(mcrypt_generic($td, $data));
043    mcrypt_generic_deinit($td);
044    mcrypt_module_close($td);
045    return $encryptedData;
046  }
047  /**
048   * 解密數據
049   * @param $data
050   *
051   * @return bool|string
052   */
053  public function decrypt($data)
054  {
055    $td = mcrypt_module_open($this->cipher, '', $this->mode, '');
056    $key = hash("sha256", $this->key, true);
057    $iv = isset($this->iv) ? hash("sha256", $this->iv, true) : $key;
058    mcrypt_generic_init($td, $key, $iv);
059    $decrypted_data = mdecrypt_generic($td, base64_decode($data));
060    mcrypt_generic_deinit($td);
061    mcrypt_module_close($td);
062    return $this->unPadding($decrypted_data);
063  }
064  /**
065   * 填充數據到分組大小的整數倍
066   * @param null $data
067   *
068   * @return string
069   */
070  protected function padding($data = null)
071  {
072    $blockSize = 32; //MCRYPT_RIJNDAEL_256算法的分組大小是32字節
073    $pad = $blockSize - (strlen($data) % $blockSize);
074    return $data . str_repeat(chr($pad), $pad);
075  }
076  /**
077   * 去掉填充的數據
078   * @param null $data
079   *
080   * @return bool|string
081   */
082  protected function unPadding($data = null)
083  {
084    $pad = ord($data[strlen($data) - 1]);
085    if ($pad > strlen($data)) {
086      return false;
087    }
088    if (strspn($data, chr($pad), strlen($data) - $pad) != $pad) {
089      return false;
090    }
091    return substr($data, 0, -1 * $pad);
092  }
093  /**
094   * @return mixed
095   */
096  public function getSecretKey()
097  {
098    return $this->key;
099  }
100  /**
101   * @param mixed $key
102   */
103  public function setSecretKey($key)
104  {
105    $this->key = $key;
106  }
107  /**
108   * @return null
109   */
110  public function getIv()
111  {
112    return $this->iv;
113  }
114  /**
115   * @param null $iv
116   */
117  public function setIv($iv)
118  {
119    $this->iv = $iv;
120  }
121}
122//使用方法:
123$keyStr = 'sq8f77fwhksk';
124$aes = new AES($keyStr);
125$str = 'www.zmynmublwnt.cn';
126$chgstr = $aes->encrypt($str);
127echo $chgstr;
128echo "<br/>";
129$rstr = $aes->decrypt($chgstr);
130echo $rstr;
131?>

運行結果:

pDyiRRNaxlss2b6SgoiVPdkD2m1QWhX393lh2iFgGdY=
www.zmynmublwnt.cn

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

延伸 · 閱讀

精彩推薦
300
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 久久精品成人 | 毛片免费在线 | 视频一区二区三区中文字幕 | 精国产品一区二区三区 | 午夜视频在线看 | 成人在线激情视频 | 欧美成人精品一区二区三区 | 九九热精品视频在线 | 欧美黄 片免费观看 | 曰批全过程120分钟免费69 | 国产精品亚洲一区二区三区久久 | 精品国产一区二区三区蜜殿 | 午夜视| 欧美一级做a | 成人辣文 | 一级毛片免费一级 | 久久生活片 | 色妞色视频一区二区三区四区 | chengrenzaixian | 李宗瑞国产福利视频一区 | 日本特级a一片免费观看 | 超碰人人做人人爱 | 国产一区二区三区在线视频 | 久久精品一二三区白丝高潮 | 亚洲第一激情网 | 国产精品亚洲三区 | 最新se94se在线欧美 | 亚洲综合一区在线观看 | 91av大片 | 国产亚洲在 | 色播亚洲 | 天天干导航 | 视频久久免费 | 91成人一区二区三区 | 欧美性色大片 | 欧美成年视频 | 日本中文字幕电影在线观看 | 日韩99| 国产中出视频 | 欧美成人精品一区二区三区 | 爱视频福利 |