123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- <?php
- /**
- * SHA1 class
- *
- * 计算公众平台的消息签名接口.
- *
- * @author gaoming13 <gaoming13@yeah.net>
- * @link https://github.com/gaoming13/wechat-php-sdk
- * @link http://me.diary8.com/
- */
- namespace echowx\utils;
- class SHA1
- {
- /**
- * 用SHA1算法生成安全签名
- * 生成微信消息体的签名
- *
- * @param string $token 票据
- * @param string $timestamp 时间戳
- * @param string $nonce 随机字符串
- * @param string $encrypt_msg 密文消息
- * @return bool|string
- */
- static function getSHA1($token, $timestamp, $nonce, $encrypt_msg)
- {
- //排序
- try {
- $array = array($encrypt_msg, $token, $timestamp, $nonce);
- sort($array, SORT_STRING);
- $str = implode($array);
- return sha1($str);
- } catch (\Exception $e) {
- @error_log('getSHA1 Error: ' . $e->getMessage(), 0);
- return FALSE;
- }
- }
- /**
- * 获取微信消息的签名
- * @param string $token 票据
- * @param string $timestamp 时间戳
- * @param string $nonce 随机字符串
- * @return bool|string
- */
- static function getSignature($token, $timestamp, $nonce)
- {
- //排序
- try {
- $array = array($token, $timestamp, $nonce);
- sort($array, SORT_STRING);
- $str = implode($array);
- return sha1($str);
- } catch (\Exception $e) {
- @error_log('getSignature Error: ' . $e->getMessage(), 0);
- return FALSE;
- }
- }
- /**
- * JS-SDK权限验证的签名
- * @param string $jsapi_ticket
- * @param string $nonceStr
- * @param string $timestamp
- * @param string $url
- * @return bool|string
- */
- static function get_jsapi_signature($jsapi_ticket, $nonceStr, $timestamp, $url)
- {
- //排序
- try {
- $str = "jsapi_ticket=$jsapi_ticket&noncestr=$nonceStr×tamp=$timestamp&url=$url";
- return sha1($str);
- } catch (\Exception $e) {
- @error_log('get_jsapi_signature Error: ' . $e->getMessage(), 0);
- return FALSE;
- }
- }
- /**
- * 随机生成16位字符串
- * @param int $length
- * @return string 生成的字符串
- */
- static function get_random_str($length = 16)
- {
- $str = "";
- $str_pol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
- $max = strlen($str_pol) - 1;
- for ($i = 0; $i < $length; $i++) {
- $str .= $str_pol[mt_rand(0, $max)];
- }
- return $str;
- }
- /**
- * 生成签名算法2
- * @param array $params 数据
- * @param string $suffix 后缀
- * @return string
- */
- static function getSign2($params, $suffix)
- {
- ksort($params);
- // 格式化参数格式化成url参数
- $buff = '';
- foreach ($params as $k => $v) {
- if($k != 'sign' && $v != '' && !is_array($v)){
- $buff .= $k . '=' . $v . '&';
- }
- }
- $buff = trim($buff, '&');
- $sign = $buff . '&' . $suffix;
- return strtoupper(md5($sign));
- }
- }
|