最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php中AES加密解密的例子小結(jié)

 更新時間:2014年02月18日 15:57:26   作者:  
話不多說,先放上代碼,一共有兩個文件:AES.php(aes算法類文件)和aesDemo.php(應用實例文件)

aesDemo.php:

例子,

復制代碼 代碼如下:

<?php
require_once('./AES.php');
//$aes = new AES();
$aes = new AES(true);// 把加密后的字符串按十六進制進行存儲
//$aes = new AES(true,true);// 帶有調(diào)試信息且加密字符串按十六進制存儲
$key = "this is a 32 byte key";// 密鑰
$keys = $aes->makeKey($key);
$encode = "123456";// 被加密的字符串
$ct = $aes->encryptString($encode, $keys);
echo "encode = ".$ct."<br>";
$cpt = $aes->decryptString($ct, $keys);
echo "decode = ".$cpt;
?>

例子、AES加密類

復制代碼 代碼如下:

<?php
//php aes加密類
class AESMcrypt {

public $iv = null;
public $key = null;
public $bit = 128;
private $cipher;

public function __construct($bit, $key, $iv, $mode) {
if(empty($bit) || empty($key) || empty($iv) || empty($mode))
return NULL;

$this->bit = $bit;
$this->key = $key;
$this->iv = $iv;
$this->mode = $mode;

switch($this->bit) {
case 192:$this->cipher = MCRYPT_RIJNDAEL_192; break;
case 256:$this->cipher = MCRYPT_RIJNDAEL_256; break;
default: $this->cipher = MCRYPT_RIJNDAEL_128;
}

switch($this->mode) {
case 'ecb':$this->mode = MCRYPT_MODE_ECB; break;
case 'cfb':$this->mode = MCRYPT_MODE_CFB; break;
case 'ofb':$this->mode = MCRYPT_MODE_OFB; break;
case 'nofb':$this->mode = MCRYPT_MODE_NOFB; break;
default: $this->mode = MCRYPT_MODE_CBC;
}
}

public function encrypt($data) {
$data = base64_encode(mcrypt_encrypt( $this->cipher, $this->key, $data, $this->mode, $this->iv));
return $data;
}

public function decrypt($data) {
$data = mcrypt_decrypt( $this->cipher, $this->key, base64_decode($data), $this->mode, $this->iv);
$data = rtrim(rtrim($data), "..");
return $data;
}

}
//使用方法
$aes = new AESMcrypt($bit = 128, $key = 'abcdef1234567890', $iv = '0987654321fedcba', $mode = 'cbc');
$c = $aes->encrypt('haowei.me');
var_dump($aes->decrypt($c));

例子、附一個可加密可解密類

復制代碼 代碼如下:

<?PHP
/**
 * AES加密、解密類
 * @author hushangming
 *
 * 用法:
 * <pre>
 * // 實例化類
 * // 參數(shù)$_bit:格式,支持256、192、128,默認為128字節(jié)的
 * // 參數(shù)$_type:加密/解密方式,支持cfb、cbc、nofb、ofb、stream、ecb,默認為ecb
 * // 參數(shù)$_key:密鑰,默認為abcdefghijuklmno
 * $tcaes = new TCAES();
 * $string = 'laohu';
 * // 加密
 * $encodeString = $tcaes->encode($string);
 * // 解密
 * $decodeString = $tcaes->decode($encodeString);
 * </pre>
 */
class TCAES{
 private $_bit = MCRYPT_RIJNDAEL_256;
 private $_type = MCRYPT_MODE_CBC;
 //private $_key = 'abcdefghijuklmno0123456789012345';
 private $_key = 'abcdefghijuklmno'; // 密鑰
 private $_use_base64 = true;
 private $_iv_size = null;
 private $_iv = null;

 /**
  * @param string $_key 密鑰
  * @param int $_bit 默認使用128字節(jié)
  * @param string $_type 加密解密方式
  * @param boolean $_use_base64 默認使用base64二次加密
  */
 public function __construct($_key = '', $_bit = 128, $_type = 'ecb', $_use_base64 = true){
  // 加密字節(jié)
  if(192 === $_bit){
   $this->_bit = MCRYPT_RIJNDAEL_192;
  }elseif(128 === $_bit){
   $this->_bit = MCRYPT_RIJNDAEL_128;
  }else{
   $this->_bit = MCRYPT_RIJNDAEL_256;
  }
  // 加密方法
  if('cfb' === $_type){
   $this->_type = MCRYPT_MODE_CFB;
  }elseif('cbc' === $_type){
   $this->_type = MCRYPT_MODE_CBC;
  }elseif('nofb' === $_type){
   $this->_type = MCRYPT_MODE_NOFB;
  }elseif('ofb' === $_type){
   $this->_type = MCRYPT_MODE_OFB;
  }elseif('stream' === $_type){
   $this->_type = MCRYPT_MODE_STREAM;
  }else{
   $this->_type = MCRYPT_MODE_ECB;
  }
  // 密鑰
  if(!empty($_key)){
   $this->_key = $_key;
  }
  // 是否使用base64
  $this->_use_base64 = $_use_base64;

  $this->_iv_size = mcrypt_get_iv_size($this->_bit, $this->_type);
  $this->_iv = mcrypt_create_iv($this->_iv_size, MCRYPT_RAND);
 }

 /**
  * 加密
  * @param string $string 待加密字符串
  * @return string
  */
 public function encode($string){
  if(MCRYPT_MODE_ECB === $this->_type){
   $encodeString = mcrypt_encrypt($this->_bit, $this->_key, $string, $this->_type);
  }else{
   $encodeString = mcrypt_encrypt($this->_bit, $this->_key, $string, $this->_type, $this->_iv);
  }
  if($this->_use_base64)
   $encodeString = base64_encode($encodeString);
  return $encodeString;
 }

 /**
  * 解密
  * @param string $string 待解密字符串
  * @return string
  */
 public function decode($string){
  if($this->_use_base64)
   $string = base64_decode($string);

  $string = $this->toHexString($string);
  if(MCRYPT_MODE_ECB === $this->_type){
   $decodeString = mcrypt_decrypt($this->_bit, $this->_key, $string, $this->_type);
  }else{
   $decodeString = mcrypt_decrypt($this->_bit, $this->_key, $string, $this->_type, $this->_iv);
  }
  return $decodeString;
 }

 /**
  * 將$string轉(zhuǎn)換成十六進制
  * @param string $string
  * @return stream
  */
 private function toHexString ($string){
  $buf = "";
  for ($i = 0; $i < strlen($string); $i++){
   $val = dechex(ord($string{$i}));
   if(strlen($val)< 2)
    $val = "0".$val;
   $buf .= $val;
  }
  return $buf;
 }

 /**
  * 將十六進制流$string轉(zhuǎn)換成字符串
  * @param stream $string
  * @return string
  */
 private function fromHexString($string){
  $buf = "";
  for($i = 0; $i < strlen($string); $i += 2){
   $val = chr(hexdec(substr($string, $i, 2)));
   $buf .= $val;
  }
  return $buf;
 }
}

相關(guān)文章

  • 國產(chǎn)PHP開發(fā)框架myqee新手快速入門教程

    國產(chǎn)PHP開發(fā)框架myqee新手快速入門教程

    這篇文章主要介紹了國產(chǎn)PHP開發(fā)框架myqee新手快速入門教程,myqee中文名稱邁啟PHP框架,有比較多的高級開發(fā)特性,需要的朋友可以參考下
    2014-07-07
  • Laravel 5框架學習之用戶認證

    Laravel 5框架學習之用戶認證

    本文給大家分享的是Laravel5框架中用戶認證系統(tǒng)的使用方法,十分的詳細,附上示例,推薦給小伙伴們,有需要的朋友可以參考下。
    2015-04-04
  • php提交表單時保留多個空格及換行的文本樣式的方法

    php提交表單時保留多個空格及換行的文本樣式的方法

    下面小編就為大家?guī)硪黄猵hp提交表單時保留多個空格及換行的文本樣式的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • PHP支付寶當面付2.0代碼

    PHP支付寶當面付2.0代碼

    這篇文章主要為大家詳細介紹了PHP支付寶當面付2.0代碼,支付寶條碼支付功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • PHP中使用file_get_contents post數(shù)據(jù)代碼例子

    PHP中使用file_get_contents post數(shù)據(jù)代碼例子

    這篇文章主要介紹了PHP中使用file_get_contents post數(shù)據(jù)代碼例子,本文直接給出代碼實例,需要的朋友可以參考下
    2015-02-02
  • thinkPHP顯示不出驗證碼的原因與解決方法分析

    thinkPHP顯示不出驗證碼的原因與解決方法分析

    這篇文章主要介紹了thinkPHP顯示不出驗證碼的原因與解決方法,結(jié)合具體實例形式分析了thinkPHP關(guān)于驗證碼顯示的相關(guān)配置方法與注意事項,需要的朋友可以參考下
    2017-05-05
  • 使用PHP?Smarty處理表單數(shù)據(jù)的方法

    使用PHP?Smarty處理表單數(shù)據(jù)的方法

    這篇文章主要介紹了如何使用PHP?Smarty處理表單數(shù)據(jù),首先需要下載Smarty庫并將其解壓到你的項目,下面通過本文結(jié)合實例代碼給大家講解的非常詳細,需要的朋友可以參考下
    2023-08-08
  • PHP變量賦值、代入給JavaScript中的變量

    PHP變量賦值、代入給JavaScript中的變量

    這篇文章主要介紹了PHP變量賦值、代入給JavaScript中的變量,這也是在WEB開發(fā)中非常有用的功能技巧,使用的頻率也非常高,需要的朋友可以參考下
    2015-06-06
  • Yii2中YiiBase自動加載類、引用文件方法分析(autoload)

    Yii2中YiiBase自動加載類、引用文件方法分析(autoload)

    這篇文章主要介紹了Yii2中YiiBase自動加載類、引用文件的方法,實例分析了Yii中的autoload函數(shù)用于自動加載類及引用文件的相關(guān)技巧,需要的朋友可以參考下
    2016-07-07
  • php 修改zen-cart下單和付款流程以防止漏單

    php 修改zen-cart下單和付款流程以防止漏單

    zen-cart進入第三方支付網(wǎng)站后,如果不能正常返回,則會造成客戶已付款但后臺卻無訂單數(shù)據(jù)的尷尬局面。本文就針對該問題給出一種解決方案,希望對被同樣問題困擾的同行有所幫助。
    2010-03-03

最新評論

深泽县| 枣阳市| 彭州市| 土默特左旗| 怀宁县| 定日县| 奉贤区| 平潭县| 澎湖县| 安义县| 三穗县| 望都县| 兴化市| 涪陵区| 上林县| 陇西县| 康乐县| 井研县| 洛隆县| 梓潼县| 紫金县| 滕州市| 内黄县| 无锡市| 汽车| 永吉县| 巴南区| 鄂州市| 定远县| 杂多县| 汉中市| 武夷山市| 南平市| 林口县| 大余县| 黑山县| 杂多县| 连山| 平舆县| 沈阳市| 洛隆县|