• 技术文章 >后端开发 >php教程

    linux - python复写php的代码

    2016-06-06 20:15:31原创397
    1. python里面的pkcs7加密好像实现不一样,得出的结果完全不一样

    2. php的代码如下

         public static  function envelope($data){
         $Millisecond = SignEnvelope::getMillisecond();
         //保存源数据文件
         $dataFile = "./rsa/".$Millisecond."data.txt";
         //保存签名文件
         $signedFile = "./rsa/".$Millisecond."signed.txt";
         //保存签名后base64文件
         $signedDataFile = "./rsa/".$Millisecond."signedData.txt";
         //保存信封后文件
         $envelopeFile = "./rsa/".$Millisecond."envelope.txt";
      
         #加载p12
         openssl_pkcs12_read (file_get_contents(Contants::pri), $certs, Contants::passWord);
         $signCert = $certs ['cert'];
         $signKey = $certs['pkey'];
      
         #加载加密证书
         $encryCert = file_get_contents(Contants::pub);
      
         #加密原文
         $fp = fopen($dataFile, "w");
         fwrite($fp, $data);
         fclose($fp);
         #签名
         openssl_pkcs7_sign($dataFile,$signedFile,
                             $signCert, array($signKey,""), NULL, PKCS7_NOATTR|PKCS7_BINARY|PKCS7_NOSIGS);
         $signedBase64 = file_get_contents($signedFile);
         $signedBase64 = substr($signedBase64, strpos($signedBase64, "base64") + strlen("base64"));
         trim($signedBase64);
         #print_r($signedBase64);
         #echo "


      "; $signedData = base64_decode($signedBase64); $fp = fopen($signedDataFile, "w"); fwrite($fp, $signedData); fclose($fp); #信封 openssl_pkcs7_encrypt($signedDataFile,$envelopeFile, $encryCert, NULL, PKCS7_BINARY, OPENSSL_CIPHER_3DES); $envelopeBase64 = file_get_contents($envelopeFile); $envelopeBase64 = substr($envelopeBase64, strpos($envelopeBase64, "base64") + strlen("base64")); trim($envelopeBase64); $envelopeBase64 = base64_decode($envelopeBase64); $envelopeBase64 = base64_encode($envelopeBase64); //$envelopeBase64 = str_replace("\r\n","",$envelopeBase64); //print_r( $envelopeBase64 ); //删除加密过程中创建的文件 unlink($dataFile); unlink($signedFile); unlink($signedDataFile); unlink($envelopeFile); return $envelopeBase64;

      }

    如果要用python实现这个方法的话,应该怎么写?

    回复内容:

    1. python里面的pkcs7加密好像实现不一样,得出的结果完全不一样

    2. php的代码如下

         public static  function envelope($data){
         $Millisecond = SignEnvelope::getMillisecond();
         //保存源数据文件
         $dataFile = "./rsa/".$Millisecond."data.txt";
         //保存签名文件
         $signedFile = "./rsa/".$Millisecond."signed.txt";
         //保存签名后base64文件
         $signedDataFile = "./rsa/".$Millisecond."signedData.txt";
         //保存信封后文件
         $envelopeFile = "./rsa/".$Millisecond."envelope.txt";
      
         #加载p12
         openssl_pkcs12_read (file_get_contents(Contants::pri), $certs, Contants::passWord);
         $signCert = $certs ['cert'];
         $signKey = $certs['pkey'];
      
         #加载加密证书
         $encryCert = file_get_contents(Contants::pub);
      
         #加密原文
         $fp = fopen($dataFile, "w");
         fwrite($fp, $data);
         fclose($fp);
         #签名
         openssl_pkcs7_sign($dataFile,$signedFile,
                             $signCert, array($signKey,""), NULL, PKCS7_NOATTR|PKCS7_BINARY|PKCS7_NOSIGS);
         $signedBase64 = file_get_contents($signedFile);
         $signedBase64 = substr($signedBase64, strpos($signedBase64, "base64") + strlen("base64"));
         trim($signedBase64);
         #print_r($signedBase64);
         #echo "


      "; $signedData = base64_decode($signedBase64); $fp = fopen($signedDataFile, "w"); fwrite($fp, $signedData); fclose($fp); #信封 openssl_pkcs7_encrypt($signedDataFile,$envelopeFile, $encryCert, NULL, PKCS7_BINARY, OPENSSL_CIPHER_3DES); $envelopeBase64 = file_get_contents($envelopeFile); $envelopeBase64 = substr($envelopeBase64, strpos($envelopeBase64, "base64") + strlen("base64")); trim($envelopeBase64); $envelopeBase64 = base64_decode($envelopeBase64); $envelopeBase64 = base64_encode($envelopeBase64); //$envelopeBase64 = str_replace("\r\n","",$envelopeBase64); //print_r( $envelopeBase64 ); //删除加密过程中创建的文件 unlink($dataFile); unlink($signedFile); unlink($signedDataFile); unlink($envelopeFile); return $envelopeBase64;

      }

    如果要用python实现这个方法的话,应该怎么写?

    你需要别人帮你重写代码还是这个:http://www.php2python.com/ ?

    就是重写下啦,搜不到

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php python 加密 openssl linux
    上一篇:这样写为什么不能更新内容 下一篇:javascript - 如何清除已设置的npm淘宝镜像?
    PHP编程就业班

    相关文章推荐

    • 我28了,还能不能学PHP?• HTML英文单词汇总(PHP新手收藏)• 数组纵向切片,有内置函数吗,该如何处理 • 透过 PHP类库 phpqrcode 生成 二维码 • php学习小结-date

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网