类库下载 PHP类库 PHP는 이미지 암호화 및 암호 해독을 구현하고 솔팅을 지원합니다.

PHP는 이미지 암호화 및 암호 해독을 구현하고 솔팅을 지원합니다.

Oct 10, 2016 am 11:08 AM

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

使用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 != &#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;
    }
}

?>
로그인 후 복사


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)