jar2020.03.26升级到202012.28后http认证解密不成功,php代码没变。求助
<?php
    class RSA {
        private $priKey = null;
    
        /**
         * 构造函数
         *
         * @param string 私钥文件(签名和解密时传入)
         */
        public function __construct($private_key_file = '') {
            if ($private_key_file) {
                $this->_getPrivateKey($private_key_file);
            }
        }
    
        // 私有方法
        /**
         * 自定义错误处理
         */
        private function _error($msg) {
            die('RSA Error:' . $msg); //TODO
        }
    
        private function _getPrivateKey($file) {
            $key_content = $this->_readFile($file);
            if ($key_content) {
                $this->priKey = openssl_get_privatekey($key_content);
            }
        }
    
        private function _readFile($file) {
            $ret = false;
            if (!file_exists($file)) {
                $this->_error("The file {$file} is not exists");
            } else {
                $ret = file_get_contents($file);
            }
            return $ret;
        }
    
        /**
         * 私钥加密
         * @param string 明文
         * @return string 密文
         */
        public function encrypt($data) {
            $ret = false;
            if (!$this->priKey) $this->_error('public key error');
            if (openssl_private_encrypt($data, $result, $this->priKey)) {
                $ret = base64_encode('' . $result);
            }
            return $ret;
        }
    
        /**
         * 私钥解密
         * @param string 密文
         * @return string 明文
         */
        public function decrypt($data) {
            $ret = false;
            $data = base64_decode($data);
            if ($data !== false) {
                if (openssl_private_decrypt($data, $result, $this->priKey)) {
                    $ret = $result;
                }
            }
            return $ret;
        }
    }

    header('Content-Type:text/html;Charset=utf-8;');  
	include_once "inc/conn.php";
	$DATA = $_GET["data"];

    $prifile = 'rsa_private_key.pem';  
    $rsa = new RSA($prifile); 
	
	$userInfo = json_decode($rsa->decrypt(rawurldecode($DATA)));
    $USERNAME = $userInfo->username;
    $PASSWORD = $userInfo->password;
	
	$USERNAME = strtolower(trim($USERNAME));

	$query = "SELECT PASSWORD from USER where BYNAME='$USERNAME'";
	$cursor = exequery(TD::conn(), $query);
	
    $fail_res = array('success' => false);
    $success_res = array('success' => true, 'uuid' => $userInfo->uuid);
	
	// 自定义认证判断成功的条件
	if($ROW = mysql_fetch_array($cursor)){
        $PWD = $ROW["PASSWORD"];
	}
	if((crypt($PASSWORD, $PWD) == $PWD) || $PASSWORD==$PWD){
        echo $rsa->encrypt(json_encode($success_res));
	}else{
        echo $rsa->encrypt(json_encode($fail_res));
	}
	exit;



?>


FineReport Weirdy 发布于 2021-1-7 11:19
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
snrtuemcLv8专家互助
发布于2021-1-7 11:20

版本跨度太大,联系技术人员解决把

  • Weirdy Weirdy(提问者) 联系了客服,推来推去。最后都不理人了。现在的帆软变了。。。。。唉
    2021-04-01 13:13 
  • snrtuemc snrtuemc 回复 Weirdy(提问者) 额。。。交钱了了吗,交了的话,可以投诉的
    2021-04-01 13:15 
  • Weirdy Weirdy(提问者) 回复 snrtuemc 哈哈,交钱了。投诉了。后来终于找到一个牛逼的售后工程师给解决了。原因是帆软开始是整体加密,后来改成分段式加密了。内部一直说是PHP的问题,让我搞java。唉,帆软变大了。。。
    2021-08-02 10:04 
  • snrtuemc snrtuemc 回复 Weirdy(提问者) 还是要有手段
    2021-08-02 10:08 
  • 3关注人数
  • 411浏览人数
  • 最后回答于:2021-1-7 11:20
    请选择关闭问题的原因
    确定 取消
    返回顶部