首页 > 代码库 > php实现图片加密解密,支持加盐
php实现图片加密解密,支持加盐
一个简单的图片加解密函数
使用client跑,不要使用浏览器跑
qq845875470 ,技术交流
1 <?php 2 /** 3 * Created by hello. 4 * User: qq 845875470 5 * Date: 2016/4/2 6 * Time: 11:21 7 */ 8 9 $notice = <<<A 10 为了稳定性,必须在客户端跑 11 格式 :php path=D:/xxx/uuu type=en is_copy=1 salt=xxx 12 参数使用空格分开 13 path -- 路径 必须写 14 type -- en加密, de为解密 必须写 15 is_copy -- 1为复制,0为转移, 不写默认为转移 16 salt -- 加密钥匙 加密用什么,解密就用什么 不写默认为salt 17 A; 18 19 //如果不是客户端 20 if(PHP_SAPI != ‘cli‘) {echo $notice;die;} 21 22 //获取参数 23 $arr = parse_parameter($argv); 24 25 //如果路径没设置 26 if(!isset($arr[‘path‘]) || !isset($arr[‘type‘])) {echo $notice;die;} 27 //如果is_dir没设置 28 if(!isset($arr[‘is_copy‘])) {$arr[‘is_copy‘] = ‘‘;} 29 //如果salt没设置 30 if(!isset($arr[‘salt‘])) {$arr[‘salt‘] = ‘‘;} 31 32 //type为en就加密 33 if($arr[‘type‘] == "en") img_enconde($arr[‘path‘], $arr[‘is_copy‘], $arr[‘salt‘]); 34 //type为de就解密 35 if($arr[‘type‘] == "de") img_deconde($arr[‘path‘], $arr[‘is_copy‘], $arr[‘salt‘]); 36 37 38 function parse_parameter($argv) 39 { 40 $arr = array(); 41 //获取参数 42 for($len=count($argv)-1; $len--; ) 43 { 44 list($key, $val) = explode(‘=‘, $argv[$len]); 45 $arr[$key] = $val; 46 } 47 return $arr; 48 } 49 50 51 //图片加密函数 52 //路径文件夹 53 //是否为复制(默认不复制) 54 //盐(默认为salt) 55 function img_enconde($path, $is_copy = 0, $salt = ‘salt‘) 56 { 57 $time1 = microtime(1); 58 $handle = opendir($path); 59 if(!$salt) $salt = ‘salt‘; 60 if($handle) 61 { 62 echo "路径:" . $path . "\r\n\r\n"; 63 //在指定文件夹下创建临时文件夹 64 $temp_dir = $path . ‘\\‘ . ‘temp‘; 65 @mkdir($temp_dir, 0777, 1); 66 67 while ($file = readdir($handle)) 68 { 69 $time2 = microtime(1); 70 //构造当前文件绝对地址 71 $dir_path = $path . ‘\\‘ . $file; 72 //获取文件后缀 73 $suffix = strrchr($file, ‘.‘); 74 //图片后缀 75 $fix = array(‘.jpg‘, ‘.gif‘, ‘.bmp‘, ‘.png‘, ‘.jpeg‘, ‘.JPG‘, ‘.GIF‘, ‘.BMP‘, ‘.PNG‘, ‘JPEG‘); 76 77 if(is_file($dir_path) && in_array($suffix, $fix)) 78 { 79 //打开当前文件 80 $fh = fopen($dir_path, ‘r‘); 81 82 //打开文件为流 83 $stream = fread($fh, filesize($dir_path)); 84 //输出 85 file_put_contents($temp_dir . ‘\\‘ . uniqid(‘‘,1), $file . ‘!‘ . $salt . ‘@‘ . $stream); 86 //关闭句柄 87 fclose($fh); 88 89 //是否为复制 90 //1为复制,0为删除(默认) 91 if(!$is_copy) 92 { 93 echo "加密并删除 : " . $dir_path . "\r\n"; 94 @unlink($dir_path); 95 } 96 else 97 { 98 echo "加密 : " . $dir_path . "\r\n"; 99 }100 $time3 = microtime(1);101 echo "此图用时 ", ($time3 - $time2), " S\r\n", "已经用时 ", ($time3 - $time1), " S\r\n\r\n";102 }103 }104 105 echo "加密完成\r\n";106 }107 else108 {109 echo "path invalid ";110 return false;111 }112 }113 114 //图片解密函数115 //路径文件夹116 //是否为复制(默认不复制)117 //盐(默认为salt)加密写什么,这里就写什么118 function img_deconde($path, $is_copy = 0, $salt = ‘‘)119 {120 $time1 = microtime(1);121 $handle = opendir($path);122 if($handle)123 {124 echo "路径:" . $path . "\r\n\r\n";125 if(!$salt) $salt = ‘salt‘;126 127 //在指定文件夹下创建临时文件夹128 $temp_dir = $path . ‘\\‘ . ‘temp‘;129 @mkdir($temp_dir, 0777, 1);130 131 //核心正则132 $reg = "#^(.+?[jpgifbmne]{3,4})!(" . $salt . ")@#im";133 $res = array();134 135 $count = 0;136 while ($file = readdir($handle))137 {138 $time2 = microtime(1);139 //构造当前文件绝对地址140 $file_path = $path . ‘\\‘ . $file;141 142 if(is_file($file_path))143 {144 //文件句柄145 $hf = fopen($file_path, ‘r‘);146 //返回流147 $stream = fread($hf, filesize($file_path));148 fclose($hf);149 150 //匹配加的密码151 if(preg_match_all($reg, $stream, $res))152 {153 $count++;154 //清空盐155 $stream = str_replace($res[0][0], ‘‘, $stream);156 //输出文件157 file_put_contents($temp_dir . ‘\\‘ . $res[1][0], $stream);158 159 //是否为复制160 //1为复制,0为删除(默认)161 if(!$is_copy)162 {163 echo "成功解密删除 : " . $temp_dir . ‘\\‘ . $res[1][0] . "\r\n";164 @unlink($file_path);165 }166 else167 {168 echo "解密 : " . $temp_dir . ‘\\‘ . $res[1][0] . "\r\n";169 }170 }171 $time3 = microtime(1);172 echo "此图用时 ", ($time3 - $time2), " S\r\n", "已经用时 ", ($time3 - $time1), " S\r\n\r\n";173 }174 }175 if(!$count)176 {177 echo "没有有效的加密文件\r\n";178 return false;179 }180 echo "解密完成\r\n";181 }182 else183 {184 echo "path invalid ";185 return false;186 }187 }188 189 ?>
php实现图片加密解密,支持加盐
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。