php解密微信小程序数据

要获取微信的敏感数据,需要先将加密的数据解密之后才能获取
/**
 * Created by PhpStorm.
 * User: HP
 * Date: 2019/8/15
 * Time: 14:13
 *
 * error code 说明.
 * 
    *
  • -41001: encodingAesKey 非法
  • *
  • -41003: aes 解密失败
  • *
  • -41004: 解密后得到的buffer非法
  • *
  • -41005: base64加密失败
  • *
  • -41016: base64解密失败
  • *
*/
class WXBizDataCrypt { public static $OK = 0; public static $IllegalAesKey = -41001; public static $IllegalIv = -41002; public static $IllegalBuffer = -41003; public static $DecodeBase64Error = -41004; private $appid; private $sessionKey; /** * 构造函数 * $sessionKey string 用户在小程序登录后获取的会话密钥 * $appid string 小程序的appid * WXBizDataCrypt constructor. * @param $params */ public function __construct($params) { $this->sessionKey = $params["sessionKey"]; $this->appid = $params["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 self::$IllegalAesKey; } $aesKey=base64_decode($this->sessionKey); if (strlen($iv) != 24) { return self::$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 self::$IllegalBuffer; } if( $dataObj->watermark->appid != $this->appid ) { return self::$IllegalBuffer; } $data = $result; return self::$OK; } }

你可能感兴趣的:(小程序,php)