zoukankan      html  css  js  c++  java
  • 微擎 人人商城小程序获取不到用户信息

    有可能是 addons/ewei_shopv2/plugin/app/core/wxapp/pkcs7Encoder.php 这个文件的加密代码需要升级了

    全部替换成下面这个

    <?php
    
    require_once EWEI_SHOPV2_PLUGIN . "app/core/wxapp/errorCode.php";
    /**
     * PKCS7Encoder class
     *
     * 提供基于PKCS7算法的加解密接口.
     */
    class PKCS7Encoder
    {
        public static $block_size = 16;
        /**
         * 对需要加密的明文进行填充补位
         * @param $text 需要进行填充补位操作的明文
         * @return 补齐明文字符串
         */
        public function encode($text)
        {
            $block_size = PKCS7Encoder::$block_size;
            $text_length = strlen($text);
            $amount_to_pad = PKCS7Encoder::$block_size - $text_length % PKCS7Encoder::$block_size;
            if ($amount_to_pad == 0) {
                $amount_to_pad = PKCS7Encoder::block_size;
            }
            $pad_chr = chr($amount_to_pad);
            $tmp = "";
            for ($index = 0; $index < $amount_to_pad; $index++) {
                $tmp .= $pad_chr;
            }
            return $text . $tmp;
        }
        /**
         * 对解密后的明文进行补位删除
         * @param decrypted 解密后的明文
         * @return 删除填充补位后的明文
         */
        public function decode($text)
        {
            $pad = ord(substr($text, -1));
            if ($pad < 1 || 32 < $pad) {
                $pad = 0;
            }
            return substr($text, 0, strlen($text) - $pad);
        }
    }
    /**
     * Prpcrypt class
     *
     *
     */
    class Prpcrypt
    {
        public $key = NULL;
        public function Prpcrypt($k)
        {
            $this->key = $k;
        }
        /**
         * 对密文进行解密 php7.0以下
         * @param string $aesCipher 需要解密的密文
         * @param string $aesIV 解密的初始向量
         * @return string 解密得到的明文
         */
        /*  public function decrypt($aesCipher, $aesIV)
          {
              try {
                  $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, "", MCRYPT_MODE_CBC, ""); exit('4545454');
                  mcrypt_generic_init($module, $this->key, $aesIV);
                  $decrypted = mdecrypt_generic($module, $aesCipher);
                  mcrypt_generic_deinit($module);
                  mcrypt_module_close($module);
              } catch (Exception $e) {
                  return array(ErrorCode::$IllegalBuffer, NULL);
              }
              try {
                  $pkc_encoder = new PKCS7Encoder();
                  $result = $pkc_encoder->decode($decrypted);
              } catch (Exception $e) {
                  return array(ErrorCode::$IllegalBuffer, NULL);
              }
              return array(0, $result);
          }*/
    
    
        public function decrypt( $aesCipher, $aesIV )
        {
            try {
    
    
                $decrypted = openssl_decrypt($aesCipher,'AES-128-CBC',$this->key,OPENSSL_ZERO_PADDING,$aesIV);
                // var_dump($decrypted);
            } catch (Exception $e) {
                return array(ErrorCode::$IllegalBuffer, null);
            }
            try {
                //去除补位字符
                $pkc_encoder = new PKCS7Encoder;
                $result = $pkc_encoder->decode($decrypted);
            } catch (Exception $e) {
                //print $e;
                return array(ErrorCode::$IllegalBuffer, null);
            }
            return array(0, $result);
        }
    }
    
    ?>
    技术最菜,头发最少
  • 相关阅读:
    [转] zigbee的低功耗
    手机显示电量原理
    TinyOS总结(一)
    KingPaper初探redist 之redis设置分析
    KingPaper初探redis之redis在window xp下的安装
    Web开发必知的八种隔离级别
    目前国内著名的维客(wiki)网站
    SSH Secure Shell Client
    Java线程:volatile关键字
    JDK1.6(JDK6.0) 新特性
  • 原文地址:https://www.cnblogs.com/gushengyan/p/12605599.html
Copyright © 2011-2022 走看看