php如何加密圖片,php實現圖片加密解密,支持設置密碼 (兩年后版本!)

* by hello

* 84587470

*

* php 文件加密類,支持設置密碼,圖片,文件都可以!情侶們的福音!!!

**/

$from = 'C:\Users\Administrator\Desktop\t\test.png';$to = 'C:\Users\Administrator\Desktop\t\\';//加密

encrpty::en($from , $to , 'xxxx');//解密

encrpty::de('C:\Users\Administrator\Desktop\t\00f8fbb037778e31455211b4bdcb0874' , $to , 'xxxx');classencrpty

{const DS =DIRECTORY_SEPARATOR;const FILE = 1;const DIRECTORY = 2;const ALL = 3;/**

* 文件加密

*

* @param $from 源

* @param $to 保存位置

* @param string $slat 密碼

*

* @return array*/

public static function en($from , $to , $slat = 'xxx')

{$data =['sign' => 1 ,

'msg' => '' ,];try{$imgObj = new \SplFileInfo($from);$stram = implode('' ,['@@_____' ,

$slat ,

'@@_____' ,

$imgObj->getBasename() ,

'@@_____' ,]). (file_get_contents($imgObj->getRealPath()));$stram = gzcompress($stram);file_put_contents(static::replaceToSysSeparator($to) . md5($imgObj->getRealPath()) , ($stram));

}catch (\Exception $exception)

{$data['sign'] = 0;$data['data'] = $exception->getMessage();

}return $data;

}/**

* 解密

*

* @param $from 源

* @param $to 保存位置

* @param string $slat 密碼

*

* @return array*/

public static function de($from , $to , $slat = 'xxx')

{$data =['sign' => 1 ,

'msg' => '' ,];try{$imgObj = new \SplFileInfo($from);$stram = file_get_contents($imgObj->getRealPath());$stram = gzuncompress($stram);$reg = implode('' ,['#' ,

'^@@_____' ,

preg_quote($slat , '#') ,

'@@_____' ,

'(.*?)' ,

'@@_____' ,

'#i' ,]);preg_match($reg , $stram , $res);if(isset($res[1]))

{

self::mkdir_($to);$result = preg_replace($reg , '' , $stram);file_put_contents(static::endDS($to) . $res[1] , $result);

}else{$data['sign'] = 0;$data['data'] = '解密出錯';

}

}catch (\Exception $exception)

{$data['sign'] = 0;$data['data'] = $exception->getMessage();

}return $data;

}/**

* 自動為路徑后面加DIRECTORY_SEPARATORY

*

* @param string $path 文件夾路徑

*

* @return string*/

public static function endDS($path)

{return rtrim(rtrim(static::replaceToSysSeparator($path) , '/') , '\\') . static::DS;

}/**

* @param $path

*

* @return string*/

public static function replaceToSysSeparator($path)

{return strtr($path ,['\\' => static::DS ,

'/' => static::DS ,]);

}/**

* @param $path

*

* @return string*/

public static function replaceToUrlSeparator($path)

{return strtr($path ,['\\' => '/' ,]);

}/**

* 格式化字節大小

*

* @param number $size 字節數

* @param string |int $de

*

* @return string 格式化后的帶單位的大小*/

public static function byteFormat($size , $de = 2)

{$a = array("B" ,

"KB" ,

"MB" ,

"GB" ,

"TB" ,

"PB" ,);$pos = 0;while ($size >= 1024)

{$size /= 1024;$pos++;

}return round($size , $de) . " " . $a[$pos];

}/**

* 創建文件夾

*

* @param $path

* @param int $mode

*

* @return bool*/

public static function mkdir_($path , $mode = 0777)

{return !is_dir(($path)) ? mkdir(($path) , $mode , 1) : @chmod($path , $mode);

}/**

* 列出文件夾里文件信息

*

* @param $path

* @param callable|null $callback

* @param int $flag

*

* @return array*/

public static function listDir($path , callable $callback = null , $flag = self::ALL)

{$files =[];if(is_dir($path) && is_readable($path))

{try{$directory = new \FilesystemIterator ($path);$filter = new \CallbackFilterIterator ($directory , function($current , $key , $iterator) use ($flag) {switch ($flag)

{case static::FILE:

return $current->isFile();case static::DIRECTORY:

return $current->isDir();default:

return true;

}

});foreach ($filter as $info)

{if(is_callable($callback))

{$files[] = call_user_func_array($callback ,[$info ,]);

}else{$files[] = $info;

}

}

}catch (\Exception $e)

{$files =[];

}

}return $files;

}

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534594.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534594.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534594.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php面向對象編程代碼怎么寫,php面向對象編程(一)

類與對象關系:類就像一個人類的群體 我們從類中實例化一個對象 就像是制定一個人。面向對象程序的單位就是對象,但對象又是通過類的實例化出來的,所以我們首先要做的就是如何來聲明類, 做出來一個類很容易。類的格式class 類名 { …

雅馬哈php mt7,雅馬哈專業錄音室監聽耳機 HPH-MT7 正式發售!

從 NS-10M 監聽音箱到 MSP 系列和 HS 系列,雅馬哈始終秉持忠實的設計理念,聚焦聲學精度,為音頻專家提供出色的平臺,構建并成就他們專屬的專業之聲。MT7錄音室監聽耳機承襲了這一基本研發理念,重現最為精細的聲音,力求滿…

php 支付簽名驗證失敗,choosewxpay fail解決,微信支付簽名驗證錯誤解決

require_once("config.php"); //這個文件原來寫過的博客有http://jipq1016.com/display.php?id9//統一下單$openid$_POST[openid];$arr[appid]$appid; //商戶appid$arr[mch_id]$mch_id; //微信支付…

趣學java,編程趣學習app

編程趣學習在這里會有多種編程語言是可以去學習的Java或者是c,入門級的海鷗就是更加有難度的都是可以選擇一個自己可以去學習的課程,跟著講師一同開始及逆行語言基礎知識的學習后面大家就是根據自己的的課后作業完成,去自己調試新的程序。編程…

cgi php腳本運行超時間,php超時 - php-cgi調用外部程序超時,但php在命令行模式下能完整運行外部程序...

運行環境為Ubuntu14.04php腳本無論用Apache還是nginx都會在R語言運行一半時終止運行(在需要等待運行3~5秒時的步驟停止)但用php在命令行模式php -f result.php卻能完整運行。請問是否能通過修改php配置,解決這個問題回復內容:運行環境為Ubuntu14.04php腳…

oracle無法分區,oracle已存在的表添加新分區的方法

現在有一張表如下:create table WRITE_USER(area_code VARCHAR2(8),user_no VARCHAR2(20),user_name VARCHAR2(100),address VARCHAR2(100),mon NUMBER(6),mon_sn NUM…

oracle常用表查詢,ORACLE EBS常用表及查詢語句(最終整理版)

select * from ar_batches_all 事務處理批select * from ra_customer_trx_all 發票頭select * from ra_customer_trx_lines_all 發票行select * from ra_cust_trx_line_gl_dist_all 發票分配select * from ar_cash_receipts_all 收…

aix升級新安裝oracle,安裝Oracle 11gR2 AIX 5.3 升級到TL11的一些小記錄

Dep-app 需要locdevices.usbif.08025002.rtersct.compat.basic.sp打5300-11-00-0943時需要devices.usbif.08025002.rte 5.3.11.0 重啟可以 或 刪除 devices.usbif.08025002.rte 5.3.7.7打5300-11-04-1015時需要bos.sysmgt.sysbr 5.3.11.0 5.3.11.3bos.sysmgt.sysbr 需要bos…

oracle連續狀態相同,數據庫共有三種狀態:quiesce、resrict、suspend

數據庫共有三種狀態:quiesce、resrict、suspend一、quiesce模式首先來說說數據庫的靜默狀態靜默狀態是指數據庫中只存在sys和system用戶建立的活動會話。只有dba能繼續操作數據庫。此狀態下可以進行一些在非靜默狀態下執行可能存在不安全因素的特殊操作。對于必須持…

oracle數據庫連接名是什么,連接到Oracle數據庫的幾種命名方式

連接到Oracle數據庫的幾種命名方式從事 Oracle 相關工作的人,每天都會使用各種工具連接到 Oracle 數據庫,比如:SQL*Plus、PL/SQL、TOAD、SQLDeveloper 等等,下面就列舉了幾種連接到 Oracle 的方式,本例中使用的是 SQL*…

jmeter無法釋放oracle連接,jmeter 連接ORACLE數據庫錯誤及解決方法

問題一:Response message: java.sql.SQLException:Cannot load JDBC driver class ‘oracle.jdbc.driver.OracleDriver‘未引入ojdbc14.jar包所致,2種解決方案,最好重啟一下:1.在測試計劃頁面中,點擊瀏覽,選…

oracle11g ora 12518,servlet執行update報錯ORA-12518

ORA-12518: TNS:listener could not hand off client connection這種錯誤一般是在測試數據庫并發性的,多個用戶的,后臺用servleORA-12518: TNS:listener could not hand off client connection這種錯誤一般是在測試數據庫并發性的,多個用戶的…

linux怎么添加頭文件目錄下,linux下編寫c++,include的那些頭文件在什么地方?

炎炎設計C/C程序在linux下被編譯和連接時,GCC/G會查找系統默認的include和link的路徑,以及自己在編譯命令中指定的路徑。自己指定的路徑就不說了,這里說明一下系統自動搜索的路徑。【1】include頭文件路徑除了默認的/usr/include, /usr/local…

linux內核調度 0號進程,Linux內核源代碼情景分析---第四章?進程與進程調度

4.1 進程四要素什么是進程?1:有一段代碼段供其執行,這代碼段不一定是進程所專用,可以與其他進程公用。2:每個進程有其專用的系統空間的堆棧(棧)【這個棧是進程起碼的“私有財產”】3:在內核中,要…

redhat linux 系統管理,紅帽系統管理一 (RH124)

紅帽系統管理一 (RH124)時間:2018-04-24 14:06:52第 1 部分 — 紅帽企業 Linux 管理員所需掌握的核心系統管理任務本課程涉及使用紅帽 企業 Linux 7。紅帽系統管理一 (RH124) 專為之前沒有 Linux 系統管理經驗的 IT 專業人員設計。本課程側重講解 Linux 系統的核心管…

linux命令行聊天,Linux 下使用talk 進行聊天

Linux中talk命令參數程序用于Internet上兩個用戶之間進行“交談”:通過鍵盤輸入“說話”,通過看終端屏幕“聆聽”。Linux中talk命令參數程序的使用很簡單,只要知道交談對象的地址,就可以邀請對方交談。格式:talk usert…

linux重啟切換內核,ubuntu更新內核切換內核啟動

ubuntu更新內核切換內核啟動1. 查看需要更新的內核命令:apt-cache search linux該命令將會顯示所有可以獲取的內核2. 安裝內核,假設你要安裝的內核為2.6.39-0,則使用下面的命令sudo apt-get install linux-headers-2.6.39-0-generic linux-im…

在linux中which命令,Linux 中 which 命令怎么用?

在Linux中which命令的作用是在PATH變量指定的路徑中,搜索某個系統命令的位置,并且返回第一個搜索結果,其用法為“which [文件...]”,其參數有“-n”、“-p”、“-w”和“-V”。Linux which命令用于查找文件。which指令會在環境變量…

linux對硬盤進行分區嗎,Linux下如何對硬盤進行分區

免費資源網,https://freexyz.cn/在linux系統下,如想使用一塊新的硬盤,需要經歷分區、格式化、掛載等操作,然后才能夠使用該硬盤。如想學好如何進行分區,需要掌握好幾個相關的命令才行。下面,我們來一起看看。查看硬盤使…

corssover linux運行無效,使用 CrossOver 在 Linux運行 Windows 軟件(金測OK)

使用 CrossOver 在 Linux運行 Windows 軟件即便是最忠實的 Linux 用戶,有時候也需要運行一下 Windows 軟件。有的用戶為此保留了一臺舊的 WindowsPC,有的使用雙啟動,有的使用虛擬機,而使用 CrossOver Linux 的用戶則通通不需要這…