php如何实现对图片对称加解密?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!
图片加解密
可以将人员身份证图片通过修改字节加密,并且可将身份证信息也写入图片中。可以直接将以下代码复制到一个php文件中进行测试。详情请看代码。
引用>& lt; php ? 类加密 {/* * *图片对称加密 * * @param [string]美元filePath图片路径 * @return无效 */公共函数enc (filePath美元) {//文档中建议:为移植性考虑,强烈建议在用fopen()打开文件时总是使用& # 39;b # 39;标记。 $文件标识=fopen (filePath美元,& # 39;rb + & # 39;);//取出文件大小的字节数(29124) (文件大?文件大小美元filePath);//读取文件,返回所读取的字符串(读出来的为二进制序列) $ img=从文件中读(文件标识,文件大小美元);//使用“无符号字符”,从二进制字符串对数据进行解包//(包,解压缩用法)https://segmentfault.com/a/1190000008305573 $ imgUnpack=解压(& # 39;C * & # 39;, img美元);//文件大小美元长度的一维数组(1=祝辞;255,2=在216年,3=在255年……,29124=祝辞217]//关闭一个已打开的文件指针 文件关闭($文件标识); 美元tempArr=[];//自定义加密规则 (i=1美元;我& lt;美元=$文件大小;$我+ +){ 美元价值=https://www.yisu.com/zixun/0; 如果($ % 3==0){ 美元价值=2; }elseif ($ % 5==0) { 美元价值=4; }elseif ($ % 7==0) { 美元价值=6; } 字节=imgUnpack美元($ i);//图片原始字节 字节=$字节+美元价值;//经过加密规则之后的字节//打包成二进制字符串 美元tempArr[]=包(C *的,美元字节); } img=内爆(“美元,美元tempArr);//将解包之后的一维数组装换成字符串 写入(filePath, img美元);//重写图片 }/* * *图片对称解密 * * @param [string]美元filepath图片路径 * @return无效 */公共函数12月(filePath美元) { 文件标识=美元fopen (filePath美元,rb +); (文件大?文件大小美元filePath); $ img=从文件中读(文件标识,文件大小美元); $ imgUnpack=解压(C *, img美元); 文件关闭($文件标识); 美元tempArr=[];//开始解密 (i=1美元;$ i <=$文件大小;$我+ +){ 美元价值=0; 如果($ % 3==0){ 美元价值=2; }elseif ($ % 5==0) { 美元价值=4; }elseif ($ % 7==0) { 美元价值=6; } 字节=imgUnpack美元($ i); 字节=$字节——美元价值; 美元tempArr[]=包(C *的,美元字节); } img=内爆(“美元,美元tempArr); 写入(filePath, img美元); }/* * *图片追加信息 * * @param [string]美元filepath图片路径 * @param(数组)美元cardmsg需要添加的信息数组 * @param(数组)美元单独分隔数组(类似于做一个加密分隔键) * @return无效 */公共函数encmsg (filePath, cardmsg美元,美元单独) {//文档中建议:为移植性考虑,强烈建议在用fopen()打开文件时总是使用b标记。 文件标识=美元fopen (filePath美元,rb +);//取出文件大小的字节数(29124) (文件大?文件大小美元filePath);//读取文件,返回所读取的字符串(读出来的为二进制序列) $ img=从文件中读(文件标识,文件大小美元);//使用“无符号字符”,从二进制字符串对数据进行解包//(包,解压缩用法)https://segmentfault.com/a/1190000008305573 $ imgUnpack=解压(C *, img美元);//文件大小美元长度的一维数组(1=> 255,2=> 216,3=> 255,……,29124=> 217)//关闭一个已打开的文件指针 文件关闭($文件标识);//处理身份信息 $ cardmsgJson=json_encode (cardmsg美元,JSON_UNESCAPED_UNICODE); $ cardmsgUnpack=解压(C *, cardmsgJson美元);//合并图片字节,自定义分隔数组(类似手动加键值),身份信息字节 $ mergeArr=array_merge (imgUnpack,分开,美元cardmsgUnpack美元); 美元包=[]; foreach (mergeArr k=>美元美元v) { 美元包[]=包(C *, v美元); } packStr=加入(“美元,美元包); 写入(filePath, packStr美元);//重写图片 }/* * *获取追加进图片的信息 * * @param [string]美元filepath图片路径 * @param(数组)美元单独定义的分隔数组(分隔键) * @return [string]追加进的图片信息 */公共函数decmsg (filePath,单独的美元) {//文档中建议:为移植性考虑,强烈建议在用fopen()打开文件时总是使用b标记。 文件标识=美元fopen (filePath美元,rb +);//取出文件大小的字节数(29192) (文件大?文件大小美元filePath);//读取文件,返回所读取的字符串(读出来的为二进制序列) $ img=从文件中读(文件标识,文件大小美元);//使用“无符号字符”,从二进制字符串对数据进行解包 $ imgUnpack=解压(C *, img美元);//文件大小美元长度的一维数组(1=> 255,2=> 216,3=> 255,……,29192=> 217)//关闭一个已打开的文件指针 文件关闭($文件标识); $ imgUnpackStr=加入(',' $ imgUnpack);//将一维数组转换为字符串 $ separateStr=内爆(',' $独立);//将一维数组转换为字符串 $ imgAndCardmsgArr=爆炸(separateStr, imgUnpackStr美元);//以自定义分隔符分隔出图片字节和身份信息字节 $ cardmsgArr=爆炸(',' $ imgAndCardmsgArr [1]);//取出身份信息字节 设置($ cardmsgArr [0]);//去除身份信息字节首位空白(字符串转数组时所留) $ cardmsg=? foreach (cardmsgArr k=>美元美元v) { cardmsg美元。=包(C *, v美元);//打包成二进制文件字符串 } 返回json_decode()美元cardmsg,真实); } } $=new加密加密(); 001. $ path='。/jpg”; $单独=(255 255 0,0,255,0,255,206,210,202,199,183,214,184,244];//15字节 $ cardmsg=['名字'=> '张三','性别'=> '男','经办人身份证'=> 12345678910);//53个字节php如何实现对图片对称加解密