Quick.class.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. /**
  3. * QuickSDK游戏同步加解密算法描述
  4. * @copyright quicksdk 2015
  5. * @author quicksdk
  6. * @version quicksdk v 0.0.1 2014/9/2
  7. */
  8. class Quick{
  9. /**
  10. * 解密方法
  11. * $strEncode 密文
  12. * $keys 解密密钥 为游戏接入时分配的 callback_key
  13. */
  14. public function decode($strEncode, $keys) {
  15. if(empty($strEncode)){
  16. return $strEncode;
  17. }
  18. preg_match_all('(\d+)', $strEncode, $list);
  19. $list = $list[0];
  20. if (count($list) > 0) {
  21. $keys = self::getBytes($keys);
  22. for ($i = 0; $i < count($list); $i++) {
  23. $keyVar = $keys[$i % count($keys)];
  24. $data[$i] = $list[$i] - (0xff & $keyVar);
  25. }
  26. return self::toStr($data);
  27. } else {
  28. return $strEncode;
  29. }
  30. }
  31. /**
  32. * 计算游戏同步签名
  33. */
  34. public static function getSign($params,$callbackkey){
  35. return md5($params['nt_data'].$params['sign'].$callbackkey);
  36. }
  37. /**
  38. * MD5签名替换
  39. */
  40. static private function replaceMD5($md5){
  41. strtolower($md5);
  42. $bytes = self::getBytes($md5);
  43. $len = count($bytes);
  44. if ($len >= 23){
  45. $change = $bytes[1];
  46. $bytes[1] = $bytes[13];
  47. $bytes[13] = $change;
  48. $change2 = $bytes[5];
  49. $bytes[5] = $bytes[17];
  50. $bytes[17] = $change2;
  51. $change3 = $bytes[7];
  52. $bytes[7] = $bytes[23];
  53. $bytes[23] = $change3;
  54. }else{
  55. return $md5;
  56. }
  57. return self::toStr($bytes);
  58. }
  59. /**
  60. * 转成字符数据
  61. */
  62. private static function getBytes($string) {
  63. $bytes = array();
  64. for($i = 0; $i < strlen($string); $i++){
  65. $bytes[] = ord($string[$i]);
  66. }
  67. return $bytes;
  68. }
  69. /**
  70. * 转化字符串
  71. */
  72. private static function toStr($bytes) {
  73. $str = '';
  74. foreach($bytes as $ch) {
  75. $str .= chr($ch);
  76. }
  77. return $str;
  78. }
  79. }
  80. ?>