Verify::buildSignStr()   B
last analyzed

Complexity

Conditions 7
Paths 15

Size

Total Lines 20
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 14
c 1
b 0
f 1
dl 0
loc 20
rs 8.8333
cc 7
nc 15
nop 1
1
<?php
2
3
namespace tinymeng\Chinaums\Tools;
4
5
/**
6
 * 加密类
7
 */
8
class Verify
9
{
10
    public static function makeSign($md5Key, $params)
11
    {
12
        $str = self::buildSignStr($params) . $md5Key;
13
        if ($params['signType'] == 'SHA256') {
14
            return strtoupper(hash('sha256', $str));
15
        }
16
        return strtoupper(hash('md5', $str));
17
    }
18
19
    public static function buildSignStr($params)
20
    {
21
        $keys = [];
22
        foreach ($params as $key => $value) {
23
            if ($key == 'sign' || is_null($value)) {
24
                continue;
25
            }
26
            array_push($keys, $key);
27
        }
28
        $str = '';
29
        sort($keys);
30
        $len = count($keys);
31
        for ($i = 0; $i < $len; $i++) {
32
            $v = $params[$keys[$i]];
33
            if (is_array($v)) {
34
                $v = json_encode($v);
35
            }
36
            $str .= $keys[$i] . '=' . $v . (($i === $len - 1) ? '' : "&");
37
        }
38
        return $str;
39
    }
40
}
41