AppUtil.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace app\utils\Allinpay;
  3. class AppUtil{
  4. /**
  5. * 将参数数组签名
  6. */
  7. //RSA签名
  8. public static function Sign(array $array, $private_key = ''){
  9. ksort($array);
  10. $bufSignSrc = AppUtil::ToUrlParams($array);
  11. // $private_key='MIIEowIBAAKCAQEAnlGKzchX0aOn9xRVuRgQRp7Oc0a5ArogQA1tOcf7sSq+M2+2bTmCxQChBrwJAo7d68jiZKRzYLTfy40gEXwc+wLDPubnyPrLnoVDubVxNXOLdF6lpm28wOO5xn1Daqd+E9l+wjhcbcUvVOSU12SXcfmwCh4lsdbTyeOFB8qlqzPvT4lGSjD+nZyiAwBgoYD13Pb2ipdAhOLfwyicv5+iWTnjNY3ZQ+5C5iajXyqXheE8/u5Gc0f+xUJx4ibYtEGx3DY/Ix7+9U2p/a9DV0KMP2xb+WPdYctqtQzX1Su3VrCGGfVCHnZGwDEvQ5eBM66/2UljDCB08TO1snu16TULPQIDAQABAoIBADzVuo+Of2hYCa/gyXvhakeouE4FjAwnN0NFpYYBeY6/jOy47ZGU+tH2hunOkWvBODdlLtFbe9ZaSnCuHvd5CK3PhvUBx2ksLdgQ/1A6D3Fpn9mskNyd6Fz6ZKWH9sLh74lzFslM3P91ONXXK/aEeclbF7EbmoJ2uVUnrzOqQ/S/2lhkgycoaCj1OC8fID5dQzmZcBVx+d++B2N96as2vqCuOW2pBTAciDIVTJNomzcahvu3fiVSswJ5j08LX8ZxT5v3soET3eo40pZMzC8H03y6LDEKsig1588YcEnGizgH8622lLnrOW3IAedSCr1bwOMQ98hWvc5r2vrZ4xoPBkUCgYEAz3nJyjUhq3KgCeDNnuhTdqZ+fL1ZrOk9T7+OM3mW/WHThQXQ4ayFwOU9F30CZLImphskUk+ebZnIl8M+/8+klzhjRgty5lfzTjbZCREKoegcqczeKLLzpAzi9K8FHlpJYHkT9+E5QsLc1BFpJwAUbwjx6Hwqxz9BUcSCovDVyTMCgYEAw1iPao9loz0RQmyOb7ufWw4gdyEdvrFPgnAOh/ZSOXs382NS7nOEMh26CTKV1pZkb2d4FNgIL1rSThVnb/c3QSeOjcbSUZ9T58FvW20Pn7hTMZuIGlRjit+AqCfr2cklcyJgd5poDZstI/5Y56bTIO+NMfyyFgXbZuFuEgFJOc8CgYALWW0pa4ig+U852xtEYw8VwXvP1QfPxp58+0yLEk6pI63PbAcGIUrbx251F3iHC5vDoF53RjWzZyMq8hpDIhet0f7UORIa+Zqsn6F1toHvY2QWAcfxUAC166KKofxUsbmr1lO6To60UTaFP0KSSJXVkRaykgBBD/vBvk8rHKOFMwKBgQCxSfPHW2N8FlVOuqU/BMIo6pZOaDDNu7CUiky12rlfT9REwXUn0pE8xrvr0wwoWA/JB9f02uf6ymup0EUzWeO870Cyrap9x6Nn56fACygt5iUjFawdcU9yX0wt0SV9X8/sQVvZ0Ln090utqg5YF5DwCFlV76hU0nYAVkIGd0JVAwKBgCOkJvO1jlE3e2f3KqdtiL9rl2JoUohdSPXrDONn6NwyBOS57bSj0U/4wu1x1zZnKcJZzol+5prnSg/ijfGlvJ3sTw1XGI9m3pYlh/5/Jk/cVox5MjQZwLt0UDoUob8Ft0LtWTNn36UsvwVeDaU3HF+y5zitBYdzbgZ53XFXTREt';
  12. $private_key = chunk_split($private_key , 64, "\n");
  13. $key = "-----BEGIN RSA PRIVATE KEY-----\n".wordwrap($private_key)."-----END RSA PRIVATE KEY-----";
  14. // echo $key;
  15. if(openssl_sign($bufSignSrc, $signature, $key )){
  16. // echo 'sign success';
  17. }else{
  18. return 'sign fail';
  19. }
  20. $sign = base64_encode($signature);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的
  21. //echo $sign;
  22. // echo $signature,"\n";
  23. return $sign;
  24. }
  25. public static function ToUrlParams(array $array)
  26. {
  27. $buff = "";
  28. foreach ($array as $k => $v)
  29. {
  30. if($v != "" && !is_array($v)){
  31. $buff .= $k . "=" . $v . "&";
  32. }
  33. }
  34. $buff = trim($buff, "&");
  35. return $buff;
  36. }
  37. /**
  38. * 校验签名
  39. * @param array 参数
  40. * @param unknown_type appkey
  41. */
  42. public static function ValidSign(array $array, $public_key = ''){
  43. $sign =$array['sign'];
  44. unset($array['sign']);
  45. ksort($array);
  46. $bufSignSrc = AppUtil::ToUrlParams($array);
  47. // $public_key='MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCm9OV6zH5DYH/ZnAVYHscEELdCNfNTHGuBv1nYYEY9FrOzE0/4kLl9f7Y9dkWHlc2ocDwbrFSm0Vqz0q2rJPxXUYBCQl5yW3jzuKSXif7q1yOwkFVtJXvuhf5WRy+1X5FOFoMvS7538No0RpnLzmNi3ktmiqmhpcY/1pmt20FHQQIDAQAB';
  48. $public_key = chunk_split($public_key , 64, "\n");
  49. $key = "-----BEGIN PUBLIC KEY-----\n$public_key-----END PUBLIC KEY-----\n";
  50. $result= openssl_verify($bufSignSrc,base64_decode($sign), $key );
  51. return $result;
  52. }
  53. }