SignatureHelper.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. /**
  3. * 签名辅助类
  4. *
  5. */
  6. class SignatureHelper {
  7. /**
  8. * 计算hmac-sha1签名
  9. * @param array $params
  10. * @param type $secretKey
  11. * @return type
  12. */
  13. public function sign(array $params, $secretKey){
  14. $sortString = $this->buildSortString($params);
  15. $signature = hash_hmac('sha1', $sortString, $secretKey,FALSE);
  16. return $signature;
  17. }
  18. /**
  19. * 验证签名
  20. * @param array $params
  21. * @param type $signature
  22. * @param type $secretKey
  23. * @return type
  24. */
  25. public function verifySignature(array $params, $signature, $secretKey) {
  26. $tmpSign = $this->sign($params, $secretKey);
  27. return $signature == $tmpSign ? TRUE : FALSE;
  28. }
  29. /**
  30. * 构造排序字符串
  31. * @param array $params
  32. * @return string
  33. */
  34. public function buildSortString(array $params) {
  35. if(empty($params)){
  36. return '';
  37. }
  38. ksort($params);
  39. $fields = array();
  40. foreach ($params as $key => $value) {
  41. $fields[] = $key . '=' . $value;
  42. }
  43. return implode('&',$fields);
  44. }
  45. }