<?php
namespace lib;
class wxBizDataCrypt {
private $appId;
private $aesKey;
/**
* 初始化
*/
public function __construct($appid = '', $key = '') {
$this->appId = $appid;
$this->aesKey = $key;
}
/**
* 解密
*/
public function decrypt($data, $iv) {
if (24 !== strlen($this->aesKey)) {
return $this->error('-41001');
}
$aesKey = base64_decode($this->aesKey);
if (24 !== strlen($iv)) {
return $this->error('-41002');
}
$iv = base64_decode($iv);
$result = openssl_decrypt(base64_decode($data) , 'AES-128-CBC', $aesKey, 1, $iv);
$obj = json_decode($result);
if (!$obj) {
return $this->error('-41003');
}
if ($this->appId != $obj->watermark->appid) {
return $this->error('-41004');
}
return array(
'errcode' => 0,
'errmsg' => 'ok',
'result' => $result
);
}
/**
* 错误提示
*/
private function error($k) {
$arr = array(
'-41001' => 'aesKey非法',
'-41002' => 'IV字节长度不符',
'-41003' => '解密失败',
'-41004' => 'appId不符'
);
return array(
'errcode' => abs($k),
'errmsg' => $arr[$k]
);
}
/**
* 转字符串
*/
private function hex2str($hex) {
$str = '';
for ($i = 0; $i < strlen($hex) - 1; $i+= 2) {
$str .= chr(hexdec($hex[$i] . $hex[$i + 1]));
}
return $str;
}
}
thinkphp微信小程序用户信息解密类
于 2022-01-09 18:10:29 首次发布