當前位置: 首頁>>代碼示例>>PHP>>正文


PHP Prpcrypt類代碼示例

本文整理匯總了PHP中Prpcrypt的典型用法代碼示例。如果您正苦於以下問題:PHP Prpcrypt類的具體用法?PHP Prpcrypt怎麽用?PHP Prpcrypt使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了Prpcrypt類的12個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。

示例1: decrypt

	public function decrypt($msgSignature, $timestamp = null, $nonce, $postData, &$msg)
	{
		if (strlen($this->encodingAesKey) != 43) {
			return ErrorCode::$IllegalAesKey;
		}
		if ($timestamp == null) $timestamp = time();

		$pc = new Prpcrypt($this->encodingAesKey);

		$encrypt = simplexml_load_string($postData, 'SimpleXMLElement', LIBXML_NOCDATA);
		$encrypt = $encrypt->Encrypt;

		$sha1 = new SHA1;
		$array = $sha1->getSHA1($this->token, $timestamp, $nonce, $encrypt);
		$ret = $array[0];

		if ($ret != 0) {
			return $ret;
		}

		$signature = $array[1];
		if ($signature != $msgSignature) {
			return ErrorCode::$ValidateSignatureError;
		}

		$result = $pc->decrypt($encrypt, $this->appId);
		if ($result[0] != 0) {
			return $result[0];
		}
		$msg = $result[1];

		return ErrorCode::$OK;
	}
開發者ID:jianhua1982,項目名稱:LaneWeChat,代碼行數:33,代碼來源:wx_encrypt.php

示例2: DecryptMsg

 public function DecryptMsg($signature, $timeStamp = null, $nonce, $encrypt, &$decryptMsg)
 {
     if (strlen($this->m_encodingAesKey) != 43) {
         return ErrorCode::$IllegalAesKey;
     }
     $pc = new Prpcrypt($this->m_encodingAesKey);
     if ($sTimeStamp == null) {
         $sTimeStamp = time();
     }
     $sha1 = new SHA1();
     $array = $sha1->getSHA1($this->m_token, $timeStamp, $nonce, $encrypt);
     $ret = $array[0];
     if ($ret != 0) {
         return $ret;
     }
     $verifySignature = $array[1];
     if ($verifySignature != $signature) {
         return ErrorCode::$ValidateSignatureError;
     }
     $result = $pc->decrypt($encrypt, $this->m_suiteKey);
     if ($result[0] != 0) {
         return $result[0];
     }
     $decryptMsg = $result[1];
     return ErrorCode::$OK;
 }
開發者ID:vincent067,項目名稱:openapi-demo-php,代碼行數:26,代碼來源:DingtalkCrypt.php

示例3: decryptMsg

 public function decryptMsg($msgSignature, $timestamp = NULL, $nonce, $postData, &$msg)
 {
     if (strlen($this->encodingAesKey) != 43) {
         return ErrorCode::$IllegalAesKey;
     }
     $pc = new Prpcrypt($this->encodingAesKey);
     $xmlparse = new XMLParse();
     $array = $xmlparse->extract($postData);
     $ret = $array[0];
     if ($ret != 0) {
         return $ret;
     }
     if ($timestamp == NULL) {
         $timestamp = time();
     }
     $encrypt = $array[1];
     $touser_name = $array[2];
     $sha1 = new SHA1();
     $array = $sha1->getSHA1($this->token, $timestamp, $nonce, $encrypt);
     $ret = $array[0];
     if ($ret != 0) {
         return $ret;
     }
     $signature = $array[1];
     if ($signature != $msgSignature) {
         return ErrorCode::$ValidateSignatureError;
     }
     $result = $pc->decrypt($encrypt, $this->appId);
     if ($result[0] != 0) {
         return $result[0];
     }
     $msg = $result[1];
     return ErrorCode::$OK;
 }
開發者ID:fkssei,項目名稱:pigcms10,代碼行數:34,代碼來源:WXBizMsgCrypt.class.php

示例4: index

	public function index()
	{
		$encryptMsg = file_get_contents('php://input');

		if ($_GET['type'] == 'test') {
		}

		$xml_tree = new DOMDocument();
		$xml_tree->loadXML($encryptMsg);
		$xml_array = $xml_tree->getElementsByTagName('Encrypt');
		$encrypt = $xml_array->item(0)->nodeValue;
		$agentid = 0;

		if (C('agent_version')) {
			$thisAgent = M('agent')->where(array('siteurl' => 'http://' . $_SERVER['HTTP_HOST']))->find();
			$agentid = (isset($thisAgent['id']) ? intval($thisAgent['id']) : 0);
		}

		$account = M('Weixin_account')->where(array('type' => 1, 'agentid' => $agentid))->find();
		import('@.ORG.aes.WXBizMsgCrypt');
		$Prpcrypt = new Prpcrypt($account['encodingAesKey']);
		$postData = $Prpcrypt->decrypt($encrypt, $account['appId']);

		if ($postData[0] != 0) {
			return $postData[0];
		}
		else {
			$msg = $postData[1];
			$xml = new DOMDocument();
			$xml->loadXML($msg);
			$array_a = $xml->getElementsByTagName('InfoType');
			$infoType = $array_a->item(0)->nodeValue;

			if ($infoType == 'unauthorized') {
				$array_b = $xml->getElementsByTagName('AuthorizerAppid');
				$AuthorizerAppid = $array_b->item(0)->nodeValue;
				$where = array('type' => 1, 'appid' => $AuthorizerAppid);
				$save = array('authorizer_access_token' => '', 'authorizer_refresh_token' => '', 'authorizer_expires' => 0);
				M('Wxuser')->where($where)->save($save);
			}
			else if ($infoType == 'component_verify_ticket') {
				$array_e = $xml->getElementsByTagName('ComponentVerifyTicket');
				$component_verify_ticket = $array_e->item(0)->nodeValue;

				if (M('Weixin_account')->where(array('type' => 1, 'agentid' => $agentid))->save(array('component_verify_ticket' => $component_verify_ticket, 'date_time' => time()))) {
					echo 'success';
				}
			}
		}
	}
開發者ID:kevicki,項目名稱:pig,代碼行數:50,代碼來源:OpenOauthAction.class.php

示例5: index

 public function index()
 {
     $encryptMsg = file_get_contents("php://input");
     if ($_GET['type'] == 'test') {
         //file_put_contents('testMsg.txt',$encryptMsg);
     } else {
         //file_put_contents('encryptMsg.txt',$encryptMsg);
     }
     $xml_tree = new DOMDocument();
     $xml_tree->loadXML($encryptMsg);
     $xml_array = $xml_tree->getElementsByTagName('Encrypt');
     $encrypt = $xml_array->item(0)->nodeValue;
     $account = M('Weixin_account')->where(array('type' => 1))->find();
     import("@.ORG.aes.WXBizMsgCrypt");
     //$WXBizMsgCrypt= new WXBizMsgCrypt('',$account['encodingAesKey'],$account['appId']);
     $Prpcrypt = new Prpcrypt($account['encodingAesKey']);
     $postData = $Prpcrypt->decrypt($encrypt, $account['appId']);
     if ($postData[0] != 0) {
         return $postData[0];
     } else {
         $msg = $postData[1];
         $xml = new DOMDocument();
         $xml->loadXML($msg);
         $array_a = $xml->getElementsByTagName('InfoType');
         $infoType = $array_a->item(0)->nodeValue;
         //file_put_contents('infoType.txt',$infoType);
         if ($infoType == 'unauthorized') {
             $array_b = $xml->getElementsByTagName('AuthorizerAppid');
             $AuthorizerAppid = $array_b->item(0)->nodeValue;
             $where = array('type' => 1, 'appid' => $AuthorizerAppid);
             $save = array('authorizer_access_token' => '', 'authorizer_refresh_token' => '', 'authorizer_expires' => 0);
             M('Wxuser')->where($where)->save($save);
         } else {
             if ($infoType == 'component_verify_ticket') {
                 $array_e = $xml->getElementsByTagName('ComponentVerifyTicket');
                 $component_verify_ticket = $array_e->item(0)->nodeValue;
                 if (M('Weixin_account')->where(array('type' => 1))->save(array('component_verify_ticket' => $component_verify_ticket, 'date_time' => time()))) {
                     echo 'success';
                 }
             }
         }
     }
 }
開發者ID:liuguogen,項目名稱:weixin,代碼行數:43,代碼來源:OpenOauthAction.class.php

示例6: index

 /**
  * Display a listing of the resource.
  *
  * @return \Illuminate\Http\Response
  */
 public function index($msg_signature, $timestamp, $nonce)
 {
     //
     $msg_signature = urldecode($msg_signature);
     $timestamp = urldecode($timestamp);
     $nonce = urldecode($nonce);
     $echostr = I('echostr');
     $echostr = urldecode($echostr);
     if ($echostr) {
         //驗證簽名
         if (QyHelper::isSigValid($msg_signature, $this->token, $timestamp, $nonce, $echostr)) {
             $prpcrypt = new Prpcrypt($this->aeskey);
             //解密
             $content = $prpcrypt->decrypt($echostr, $this->corpid);
             if ($prpcrypt->isSuccess()) {
                 Yii::$app->response->format = Response::FORMAT_RAW;
                 \Yii::$app->response->data = $content;
                 return \Yii::$app->response;
             } else {
                 $prpcrypt->printErr();
             }
         } else {
             echo '應用簽名校驗失敗,請檢查網站、token、aeskey等配置';
         }
     } else {
         $msg_xml = I('xml');
         if (empty($msg_xml)) {
             $msg_xml = file_get_contents("php://input");
         }
         if (empty($msg_xml)) {
             $msg_xml = $GLOBALS["HTTP_RAW_POST_DATA"];
         }
         $msg = QyHelper::decryptMsg($msg_xml, $this->aeskey, $this->corpid);
         //TODO:後續需要完善,消息接收與推送這塊的功能
         //這裏需要能區分是哪個租戶的哪個應用發來的消息
         //            Yii::warning('記錄交互信息:'.$msg,'wx'.__LINE__);
     }
 }
開發者ID:kunta0514,項目名稱:laravel,代碼行數:43,代碼來源:QyController.php

示例7: reply

 /**
  *
  * 回複微信服務器, 此函數支持鏈式操作
  * Example: $this->text('msg tips')->reply();
  * @param string $msg 要發送的信息, 默認取$this->_msg
  * @param bool $return 是否返回信息而不拋出到瀏覽器 默認:否
  */
 public function reply($msg = array(), $return = false)
 {
     if (empty($msg)) {
         if (empty($this->_msg)) {
             //防止不先設置回複內容,直接調用reply方法導致異常
             return false;
         }
         $msg = $this->_msg;
     }
     $xmldata = $this->xml_encode($msg);
     $this->log($xmldata);
     if ($this->encrypt_type == 'aes') {
         //如果來源消息為加密方式
         $pc = new Prpcrypt($this->encodingAesKey);
         $array = $pc->encrypt($xmldata, $this->appid);
         $ret = $array[0];
         if ($ret != 0) {
             $this->log('encrypt err!');
             return false;
         }
         $timestamp = time();
         $nonce = rand(77, 999) * rand(605, 888) * rand(11, 99);
         $encrypt = $array[1];
         $tmpArr = array($this->token, $timestamp, $nonce, $encrypt);
         //比普通公眾平台多了一個加密的密文
         sort($tmpArr, SORT_STRING);
         $signature = implode($tmpArr);
         $signature = sha1($signature);
         $xmldata = $this->generate($encrypt, $signature, $timestamp, $nonce);
         $this->log($xmldata);
     }
     if ($return) {
         return $xmldata;
     } else {
         echo $xmldata;
     }
 }
開發者ID:phpchen,項目名稱:yiyuangou,代碼行數:44,代碼來源:Wechat.class.php

示例8: DecryptMsg

 /**
  * 檢驗消息的真實性,並且獲取解密後的明文.
  * <ol>
  *    <li>利用收到的密文生成安全簽名,進行簽名驗證</li>
  *    <li>若驗證通過,則提取xml中的加密消息</li>
  *    <li>對消息進行解密</li>
  * </ol>
  *
  * @param $msgSignature string 簽名串,對應URL參數的msg_signature
  * @param $timestamp string 時間戳 對應URL參數的timestamp
  * @param $nonce string 隨機串,對應URL參數的nonce
  * @param $postData string 密文,對應POST請求的數據
  * @param &$msg string 解密後的原文,當return返回0時有效
  *
  * @return int 成功0,失敗返回對應的錯誤碼
  */
 public function DecryptMsg($sMsgSignature, $sTimeStamp = null, $sNonce, $sPostData, &$data)
 {
     if (strlen($this->m_sEncodingAesKey) != 43) {
         return ErrorCode::$IllegalAesKey;
     }
     $pc = new Prpcrypt($this->m_sEncodingAesKey);
     //提取密文
     $xmlparse = new XMLParse();
     $array = $xmlparse->extract($sPostData);
     $ret = $array[0];
     if ($ret != 0) {
         return $ret;
     }
     if ($sTimeStamp == null) {
         $sTimeStamp = time();
     }
     $encrypt = $array[1];
     $touser_name = $array[2];
     //驗證安全簽名
     $sha1 = new SHA1();
     $array = $sha1->getSHA1($this->m_sToken, $sTimeStamp, $sNonce, $encrypt);
     $ret = $array[0];
     if ($ret != 0) {
         return $ret;
     }
     $signature = $array[1];
     if ($signature != $sMsgSignature) {
         return ErrorCode::$ValidateSignatureError;
     }
     $result = $pc->decrypt($encrypt, $this->m_sCorpid);
     if ($result[0] != 0) {
         return $result[0];
     }
     $sMsg = $result[1];
     $data = array();
     $xml = simplexml_load_string($sMsg, 'SimpleXMLElement', LIBXML_NOCDATA);
     $data = api_json_decode(api_json_encode($xml), TRUE);
     //        if($xml){
     //			foreach ($xml as $key => $value) {
     //				$data[$key] = mb_convert_encoding(strval($value),"GBK","UTF-8");;
     //			}
     //        }
     return ErrorCode::$OK;
 }
開發者ID:dalinhuang,項目名稱:andyou,代碼行數:60,代碼來源:WeixinQy.php

示例9: decryptMsg

 /**
  * 檢驗消息的真實性,並且獲取解密後的明文.
  * <ol>
  *    <li>利用收到的密文生成安全簽名,進行簽名驗證</li>
  *    <li>若驗證通過,則提取xml中的加密消息</li>
  *    <li>對消息進行解密</li>
  * </ol>
  *
  * @param $msgSignature string 簽名串,對應URL參數的msg_signature
  * @param $timestamp string 時間戳 對應URL參數的timestamp
  * @param $nonce string 隨機串,對應URL參數的nonce
  * @param $postData string 密文,對應POST請求的數據
  * @param &$msg string 解密後的原文,當return返回0時有效
  *
  * @return int 成功0,失敗返回對應的錯誤碼
  */
 public function decryptMsg($msgSignature, $timestamp = null, $nonce, $postData, &$msg)
 {
     if (strlen($this->encodingAesKey) != 43) {
         return ErrorCode::$IllegalAesKey;
     }
     $pc = new Prpcrypt($this->encodingAesKey);
     //提取密文
     $array = Tool::extract_xml_data($postData);
     $ret = $array[0];
     if ($ret != 0) {
         return $ret;
     }
     if ($timestamp == null) {
         $timestamp = time();
     }
     $encrypt = $array[1];
     $touser_name = $array[2];
     //驗證安全簽名
     $array = Tool::getSHA1($this->token, $timestamp, $nonce, $encrypt);
     $ret = $array[0];
     if ($ret != 0) {
         return $ret;
     }
     $signature = $array[1];
     if ($signature != $msgSignature) {
         return ErrorCode::$ValidateSignatureError;
     }
     $result = $pc->decrypt($encrypt, $this->appId);
     if ($result[0] != 0) {
         return $result[0];
     }
     $msg = $result[1];
     return ErrorCode::$OK;
 }
開發者ID:wxl2012,項目名稱:wx,代碼行數:50,代碼來源:wxbizmsgcrypt.php

示例10: DecryptMsg

 /**
  * 檢驗消息的真實性,並且獲取解密後的明文.
  * <ol>
  *    <li>利用收到的密文生成安全簽名,進行簽名驗證</li>
  *    <li>若驗證通過,則提取xml中的加密消息</li>
  *    <li>對消息進行解密</li>
  * </ol>
  *
  * @param $msgSignature string 簽名串,對應URL參數的msg_signature
  * @param $timestamp string 時間戳 對應URL參數的timestamp
  * @param $nonce string 隨機串,對應URL參數的nonce
  * @param $postData string 密文,對應POST請求的數據
  * @param &$msg string 解密後的原文,當return返回0時有效
  *
  * @return int 成功0,失敗返回對應的錯誤碼
  */
 public function DecryptMsg($sMsgSignature, $sTimeStamp = null, $sNonce, $sPostData, &$sMsg)
 {
     if (strlen($this->m_sEncodingAesKey) != 43) {
         return ErrorCode::$IllegalAesKey;
     }
     $pc = new Prpcrypt($this->m_sEncodingAesKey);
     //提取密文
     $xmlparse = new XMLParse();
     $array = $xmlparse->extract($sPostData);
     $ret = $array[0];
     if ($ret != 0) {
         return $ret;
     }
     if ($sTimeStamp == null) {
         $sTimeStamp = time();
     }
     $encrypt = $array[1];
     $touser_name = $array[2];
     //驗證安全簽名
     $sha1 = new SHA1();
     $array = $sha1->getSHA1($this->m_sToken, $sTimeStamp, $sNonce, $encrypt);
     $ret = $array[0];
     if ($ret != 0) {
         return $ret;
     }
     $signature = $array[1];
     if ($signature != $sMsgSignature) {
         return ErrorCode::$ValidateSignatureError;
     }
     $result = $pc->decrypt($encrypt, $this->m_sCorpid);
     if ($result[0] != 0) {
         return $result[0];
     }
     $sMsg = $result[1];
     return ErrorCode::$OK;
 }
開發者ID:harde,項目名稱:laravel-qyweixin,代碼行數:52,代碼來源:WXBizMsgCrypt.php

示例11: Prpcrypt

<?php

include_once "request.php";
$action = @get("action");
$source = @post("source");
$aesKey = @post("key");
$no = @post("no");
if (isset($source)) {
    $pc = new Prpcrypt($aesKey);
    if ($action == "encrypt") {
        $result = $pc->encrypt($source, $no);
    } else {
        $result = $pc->decrypt($source);
        // var_dump($result);
    }
    $response = array("success" => true, "result" => $result);
    printf(json_encode($response));
}
/**
 * PKCS7Encoder class
 *
 * 提供基於PKCS7算法的加解密接口.
 */
class PKCS7Encoder
{
    public static $block_size = 32;
    /**
     * 對需要加密的明文進行填充補位
     * @param $text 需要進行填充補位操作的明文
     * @return 補齊明文字符串
     */
開發者ID:mysterin,項目名稱:myutils,代碼行數:31,代碼來源:aes.php

示例12: chdir

 * 3. 對於第三方托管平台,代理的公眾號的事件微信會推送到包含/$APPID$的地址中,
 * 這時隻需在該地址的處理中require 本文件即可。並把地址上的APPID取出來放在$APPID變量中
 * 這時消息中$APPID既是appid,可以用它區分是那個公眾號
 */
chdir(dirname(__FILE__));
//把工作目錄切換到文件所在目錄
include_once dirname(__FILE__) . '/__config__.php';
//Token 驗證,微信驗證主體身份。如果是第三方平台,則不存在token驗證
if (!$GLOBALS["HTTP_RAW_POST_DATA"]) {
    if (YDWX_WEIXIN_ACCOUNT_TYPE == YDWX_WEIXIN_ACCOUNT_TYPE_CROP) {
        //企業號的url驗證
        $signature = $_GET["msg_signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
        $echostr = $_GET["echostr"];
        $pc = new Prpcrypt(YDWX_WEIXIN_ENCODING_AES_KEY);
        $sha1 = new SHA1();
        $array = $sha1->getSHA1(YDWX_WEIXIN_TOKEN, $timestamp, $nonce, $echostr);
        $ret = $array[0];
        if ($ret != 0) {
            die;
        }
        $signature = $array[1];
        if ($signature != $signature) {
            die;
        }
        $result = $pc->decrypt($echostr, YDWX_WEIXIN_CROP_ID);
        if ($result[0] != 0) {
            die;
        }
        echo $result[1];
開發者ID:qujian,項目名稱:ydwx,代碼行數:31,代碼來源:index.php


注:本文中的Prpcrypt類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。