php使用DES加密方式对图片内容进行加密处理

来源:互联网 发布:工业机器人您样编程 编辑:程序博客网 时间:2024/06/06 10:03

   项目中遇到给第三方同步图片,要求传输图片内容的des加密后转base64格式在进行传输

   下面提供了加密解密的代码

  


function encrypt($input) {    $size = mcrypt_get_block_size('des', 'ecb');    $input = $this->pkcs5_pad($input, $size);    $key = 'snPAujiK';    $td = mcrypt_module_open('des', '', 'ecb', '');    $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);    @mcrypt_generic_init($td, $key, $iv);    $data = mcrypt_generic($td, $input);    mcrypt_generic_deinit($td);    mcrypt_module_close($td);    $data = base64_encode($data);    return $data;}function decrypt($encrypted) {    $encrypted = base64_decode($encrypted);    $key = 'snPAujiK';    $td = mcrypt_module_open('des','','ecb','');    //使用MCRYPT_DES算法,cbc模式    $iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);    $ks = mcrypt_enc_get_key_size($td);    @mcrypt_generic_init($td, $key, $iv);    //初始处理    $decrypted = mdecrypt_generic($td, $encrypted);    //解密    mcrypt_generic_deinit($td);    //结束    mcrypt_module_close($td);    $y=$this->pkcs5_unpad($decrypted);    return $y;}function pkcs5_pad ($text, $blocksize) {    $pad = $blocksize - (strlen($text) % $blocksize);    return $text . str_repeat(chr($pad), $pad);}function pkcs5_unpad($text) {    $pad = ord($text{strlen($text)-1});    if ($pad > strlen($text))        return false;    if (strspn($text, chr($pad), strlen($text) - $pad) != $pad)        return false;    return substr($text, 0, -1 * $pad);}   public  function imgBase64($img_file){    //var_dump($img_file);    //$img_file='/Public/Imagessm/58366657ccd78.png';        $arr=explode('/', $_SERVER['SCRIPT_NAME']);           $str="/".$arr[1].$img_file;      $filename=$_SERVER['DOCUMENT_ROOT'].$str;       $online=M('online')->where('id=1')->find();   if($online!=NULL){       $filename = str_replace('/index.php', '', $filename);   }//   $filename = str_replace('/index.php', '', $filename);  //这段代码由于本地和线上路径的差异在本地不需要,但在线上必须得要  //var_dump($filename);    chmod($filename,777);              $img_info = getimagesize($filename);                 $fp = fopen($filename,"r");        if($fp){    // var_dump($fp);die;         $str = fread($fp,filesize($filename));  //读取图片内容         $desstr=$this->encrypt($str);         //对图片内容进行des加密         fclose($fp);    }      return $desstr;         //返回图片的base64}

imgBase64($img_file)中
$img_file是图片在thinkPHP框架内部的相对路径


2 0