中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP如何實現圖片加密解密

發布時間:2021-06-25 10:15:34 來源:億速云 閱讀:609 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關PHP如何實現圖片加密解密,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一個簡單的圖片加解密函數,使用client跑,不要使用瀏覽器跑

直接上代碼

PHP如何實現圖片加密解密

PHP如何實現圖片加密解密

PHP如何實現圖片加密解密

<?php
/**
 * Created by hello.
 * User: qq 845875470
 * Date: 2016/4/2
 * Time: 11:21
 */

$notice = <<<A
  為了穩定性,必須在客戶端跑
  格式 :php path=D:/xxx/uuu type=en is_copy=1 salt=xxx
  參數使用空格分開
  path    -- 路徑 必須寫
  type    -- en加密, de為解密 必須寫
  is_copy    -- 1為復制,0為轉移,         不寫默認為轉移
  salt    -- 加密鑰匙 加密用什么,解密就用什么  不寫默認為salt
A;

//如果不是客戶端
if(PHP_SAPI != 'cli') {echo $notice;die;}

//獲取參數
$arr = parse_parameter($argv);

//如果路徑沒設置
if(!isset($arr['path']) || !isset($arr['type']))   {echo $notice;die;}
//如果is_dir沒設置
if(!isset($arr['is_copy']))             {$arr['is_copy'] = '';}
//如果salt沒設置
if(!isset($arr['salt']))               {$arr['salt'] = '';}

//type為en就加密
if($arr['type'] == "en") img_enconde($arr['path'], $arr['is_copy'], $arr['salt']);
//type為de就解密
if($arr['type'] == "de") img_deconde($arr['path'], $arr['is_copy'], $arr['salt']);


function parse_parameter($argv)
{
  $arr = array();
  //獲取參數
  for($len=count($argv)-1; $len--; )
  {
    list($key, $val) = explode('=', $argv[$len]);
    $arr[$key] = $val;
  }
  return $arr;
}


//圖片加密函數
//路徑文件夾
//是否為復制(默認不復制)
//鹽(默認為salt)
function img_enconde($path, $is_copy = 0, $salt = 'salt')
{
  $time1 = microtime(1);
  $handle = opendir($path);
  if(!$salt) $salt = 'salt';
  if($handle)
  {
    echo "路徑:" . $path . "\r\n\r\n";
    //在指定文件夾下創建臨時文件夾
    $temp_dir = $path . '\\' . 'temp';
    @mkdir($temp_dir, 0777, 1);

    while ($file = readdir($handle))
    {
      $time2 = microtime(1);
      //構造當前文件絕對地址
      $dir_path = $path . '\\' . $file;
      //獲取文件后綴
      $suffix = strrchr($file, '.');
      //圖片后綴
      $fix = array('.jpg', '.gif', '.bmp', '.png', '.jpeg', '.JPG', '.GIF', '.BMP', '.PNG', 'JPEG');

      if(is_file($dir_path) && in_array($suffix, $fix))
      {
        //打開當前文件
        $fh = fopen($dir_path, 'r');

        //打開文件為流
        $stream = fread($fh, filesize($dir_path));
        //輸出
        file_put_contents($temp_dir . '\\' . uniqid('',1), $file . '!' . $salt . '@' . $stream);
        //關閉句柄
        fclose($fh);

        //是否為復制
        //1為復制,0為刪除(默認)
        if(!$is_copy)
        {
          echo "加密并刪除 : " . $dir_path . "\r\n";
          @unlink($dir_path);
        }
        else
        {
          echo "加密 : " . $dir_path . "\r\n";
        }
        $time3 = microtime(1);
        echo "此圖用時 ", ($time3 - $time2), " S\r\n", "已經用時 ", ($time3 - $time1), " S\r\n\r\n";
      }
    }

    echo "加密完成\r\n";
  }
  else
  {
    echo "path invalid ";
    return false;
  }
}

//圖片解密函數
//路徑文件夾
//是否為復制(默認不復制)
//鹽(默認為salt)加密寫什么,這里就寫什么
function img_deconde($path, $is_copy = 0, $salt = '')
{
  $time1 = microtime(1);
  $handle = opendir($path);
  if($handle)
  {
    echo "路徑:" . $path . "\r\n\r\n";
    if(!$salt) $salt = 'salt';

    //在指定文件夾下創建臨時文件夾
    $temp_dir = $path . '\\' . 'temp';
    @mkdir($temp_dir, 0777, 1);

    //核心正則
    $reg = "#^(.+?[jpgifbmne]{3,4})!(" . $salt . ")@#im";
    $res = array();

    $count = 0;
    while ($file = readdir($handle))
    {
      $time2 = microtime(1);
      //構造當前文件絕對地址
      $file_path = $path . '\\' . $file;

      if(is_file($file_path))
      {
        //文件句柄
        $hf = fopen($file_path, 'r');
        //返回流
        $stream = fread($hf, filesize($file_path));
        fclose($hf);

        //匹配加的密碼
        if(preg_match_all($reg, $stream, $res))
        {
          $count++;
          //清空鹽
          $stream = str_replace($res[0][0], '', $stream);
          //輸出文件
          file_put_contents($temp_dir . '\\' . $res[1][0], $stream);

          //是否為復制
          //1為復制,0為刪除(默認)
          if(!$is_copy)
          {
            echo "成功解密刪除 : " . $temp_dir . '\\' . $res[1][0] . "\r\n";
            @unlink($file_path);
          }
          else
          {
            echo "解密 : " . $temp_dir . '\\' . $res[1][0] . "\r\n";
          }
        }
        $time3 = microtime(1);
        echo "此圖用時 ", ($time3 - $time2), " S\r\n", "已經用時 ", ($time3 - $time1), " S\r\n\r\n";
      }
    }
    if(!$count)
    {
      echo "沒有有效的加密文件\r\n";
      return false;
    }
    echo "解密完成\r\n";
  }
  else
  {
    echo "path invalid ";
    return false;
  }
}

?>

關于“PHP如何實現圖片加密解密”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

资溪县| 响水县| 沁水县| 泰州市| 贵南县| 桐城市| 潢川县| 天水市| 杭锦后旗| 金坛市| 望奎县| 乌审旗| 五台县| 津南区| 宜兰市| 禹城市| 寻乌县| 南江县| 太谷县| 孟州市| 海原县| 梨树县| 防城港市| 奉化市| 张家界市| 综艺| 吐鲁番市| 延寿县| 竹山县| 瑞昌市| 鹤壁市| 龙口市| 阿尔山市| 张家港市| 浑源县| 呼图壁县| 金昌市| 永胜县| 罗山县| 淮滨县| 昌平区|