本文整理汇总了PHP中Prpcrypt::decrypt方法的典型用法代码示例。如果您正苦于以下问题:PHP Prpcrypt::decrypt方法的具体用法?PHP Prpcrypt::decrypt怎么用?PHP Prpcrypt::decrypt使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Prpcrypt
的用法示例。
在下文中一共展示了Prpcrypt::decrypt方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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;
}
示例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;
}
示例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;
}
示例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';
}
}
}
}
示例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';
}
}
}
}
}
示例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__);
}
}
示例7: valid
/**
* For weixin server validation
* @param bool $return 是否返回
*/
public function valid($return = false)
{
$encryptStr = "";
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$postStr = file_get_contents("php://input");
$array = (array) simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$this->encrypt_type = isset($_GET["encrypt_type"]) ? $_GET["encrypt_type"] : '';
if ($this->encrypt_type == 'aes') {
//aes加密
$this->log($postStr);
$encryptStr = $array['Encrypt'];
$pc = new Prpcrypt($this->encodingAesKey);
$array = $pc->decrypt($encryptStr, $this->appid);
if (!isset($array[0]) || $array[0] != 0) {
if (!$return) {
die('decrypt error!');
} else {
return false;
}
}
$this->postxml = $array[1];
if (!$this->appid) {
$this->appid = $array[2];
}
//为了没有appid的订阅号。
} else {
$this->postxml = $postStr;
}
} elseif (isset($_GET["echostr"])) {
$echoStr = $_GET["echostr"];
if ($return) {
if ($this->checkSignature()) {
return $echoStr;
} else {
return false;
}
} else {
if ($this->checkSignature()) {
die($echoStr);
} else {
die('no access');
}
}
}
if (!$this->checkSignature($encryptStr)) {
if ($return) {
return false;
} else {
die('no access');
}
}
return true;
}
示例8: valid
/**
* 微信验证,包括post来的xml解密
* @param bool $return 是否返回
*/
public function valid($return = false)
{
$encryptStr = "";
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$postStr = file_get_contents("php://input");
$array = (array) simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$this->log($postStr);
if (isset($array['Encrypt'])) {
$encryptStr = $array['Encrypt'];
$this->agentidxml = isset($array['AgentID']) ? $array['AgentID'] : '';
}
} else {
$encryptStr = isset($_GET["echostr"]) ? $_GET["echostr"] : '';
}
if ($encryptStr) {
$ret = $this->checkSignature($encryptStr);
}
if (!isset($ret) || !$ret) {
if (!$return) {
die('no access');
} else {
return false;
}
}
$pc = new Prpcrypt($this->encodingAesKey);
$array = $pc->decrypt($encryptStr, $this->appid);
if (!isset($array[0]) || $array[0] != 0) {
if (!$return) {
die('解密失败!');
} else {
return false;
}
}
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$this->postxml = $array[1];
//$this->log($array[1]);
return $this->postxml != "";
} else {
$echoStr = $array[1];
if ($return) {
return $echoStr;
} else {
die($echoStr);
}
}
return false;
}
示例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($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;
}
示例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($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;
}
示例11: 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;
}
示例12: 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 补齐明文字符串
*/
示例13: Prpcrypt
$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];
} else {
//其它公众号的验证
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$echostr = $_GET["echostr"];
$token = YDWX_WEIXIN_TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);