Rumah 类库下载 PHP类库 php实现图片加密解密,支持加盐

php实现图片加密解密,支持加盐

Oct 10, 2016 am 11:08 AM

一个简单的图片加解密函数

使用client跑,不要使用浏览器跑

1.jpg

1.jpg

1.png

<?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 != &#39;cli&#39;) {echo $notice;die;}

//获取参数
$arr = parse_parameter($argv);

//如果路径没设置
if(!isset($arr[&#39;path&#39;]) || !isset($arr[&#39;type&#39;]))     {echo $notice;die;}
//如果is_dir没设置
if(!isset($arr[&#39;is_copy&#39;]))                         {$arr[&#39;is_copy&#39;] = &#39;&#39;;}
//如果salt没设置
if(!isset($arr[&#39;salt&#39;]))                             {$arr[&#39;salt&#39;] = &#39;&#39;;}

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


function parse_parameter($argv)
{
    $arr = array();
    //获取参数
    for($len=count($argv)-1; $len--; )
    {
        list($key, $val) = explode(&#39;=&#39;, $argv[$len]);
        $arr[$key] = $val;
    }
    return $arr;
}


//图片加密函数
//路径文件夹
//是否为复制(默认不复制)
//盐(默认为salt)
function img_enconde($path, $is_copy = 0, $salt = &#39;salt&#39;)
{
    $time1 = microtime(1);
    $handle = opendir($path);
    if(!$salt) $salt = &#39;salt&#39;;
    if($handle)
    {
        echo "路径:" . $path . "\r\n\r\n";
        //在指定文件夹下创建临时文件夹
        $temp_dir = $path . &#39;\\&#39; . &#39;temp&#39;;
        @mkdir($temp_dir, 0777, 1);

        while ($file = readdir($handle))
        {
            $time2 = microtime(1);
            //构造当前文件绝对地址
            $dir_path = $path . &#39;\\&#39; . $file;
            //获取文件后缀
            $suffix = strrchr($file, &#39;.&#39;);
            //图片后缀
            $fix = array(&#39;.jpg&#39;, &#39;.gif&#39;, &#39;.bmp&#39;, &#39;.png&#39;, &#39;.jpeg&#39;, &#39;.JPG&#39;, &#39;.GIF&#39;, &#39;.BMP&#39;, &#39;.PNG&#39;, &#39;JPEG&#39;);

            if(is_file($dir_path) && in_array($suffix, $fix))
            {
                //打开当前文件
                $fh = fopen($dir_path, &#39;r&#39;);

                //打开文件为流
                $stream = fread($fh, filesize($dir_path));
                //输出
                file_put_contents($temp_dir . &#39;\\&#39; . uniqid(&#39;&#39;,1), $file . &#39;!&#39; . $salt . &#39;@&#39; . $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 = &#39;&#39;)
{
    $time1 = microtime(1);
    $handle = opendir($path);
    if($handle)
    {
        echo "路径:" . $path . "\r\n\r\n";
        if(!$salt) $salt = &#39;salt&#39;;

        //在指定文件夹下创建临时文件夹
        $temp_dir = $path . &#39;\\&#39; . &#39;temp&#39;;
        @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 . &#39;\\&#39; . $file;

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

                //匹配加的密码
                if(preg_match_all($reg, $stream, $res))
                {
                    $count++;
                    //清空盐
                    $stream = str_replace($res[0][0], &#39;&#39;, $stream);
                    //输出文件
                    file_put_contents($temp_dir . &#39;\\&#39; . $res[1][0], $stream);

                    //是否为复制
                    //1为复制,0为删除(默认)
                    if(!$is_copy)
                    {
                        echo "成功解密删除 : " . $temp_dir . &#39;\\&#39; . $res[1][0] . "\r\n";
                        @unlink($file_path);
                    }
                    else
                    {
                        echo "解密 : " . $temp_dir . &#39;\\&#39; . $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;
    }
}

?>
Salin selepas log masuk


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)