| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | <?phpnamespace miniprogram;/** * 对微信小程序用户加密数据的解密示例代码. * * @copyright Copyright (c) 1998-2014 Tencent Inc. */use miniprogram\errorCode;//include_once "errorCode.php";class WXBizDataCrypt{    private $appid;	private $sessionKey;	/**	 * 构造函数	 * @param $sessionKey string 用户在小程序登录后获取的会话密钥	 * @param $appid string 小程序的appid	 */	public function __construct( $appid, $sessionKey)	{		$this->sessionKey = $sessionKey;		$this->appid = $appid;	}	/**	 * 检验数据的真实性,并且获取解密后的明文.	 * @param $encryptedData string 加密的用户数据	 * @param $iv string 与用户数据一同返回的初始向量	 * @param $data string 解密后的原文     *	 * @return int 成功0,失败返回对应的错误码	 */	public function decryptData( $encryptedData, $iv, &$data )	{		if (strlen($this->sessionKey) != 24) {			return ErrorCode::$IllegalAesKey;		}		$aesKey=base64_decode($this->sessionKey);        		if (strlen($iv) != 24) {			return ErrorCode::$IllegalIv;		}		$aesIV=base64_decode($iv);		$aesCipher=base64_decode($encryptedData);		$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);		$dataObj=json_decode( $result );		if( $dataObj  == NULL )		{			return ErrorCode::$IllegalEmpty;		}		if( $dataObj->watermark->appid != $this->appid )		{			return ErrorCode::$IllegalBuffer;		}		$data = $result;		return ErrorCode::$OK;	}}
 |