PHP实现加盐的图片加密
PHP加密解密算是老话题,今天给大家分享一篇关于php实现图片加密解密,支持加盐的文章,有需要的朋友们可以参考借鉴。希望对大家有所帮助。
一个简单的图片加解密函数,使用client跑,不要使用浏览器跑
话不多说,直接上代码
<?php $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实现加盐的图片加密的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。

在PHP中可以通过使用不可预测的令牌来有效防范CSRF攻击。具体方法包括:1.生成并在表单中嵌入CSRF令牌;2.在处理请求时验证令牌的有效性。
