php如何实现对图片对称加解密

  

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如何实现对图片对称加解密