login.js 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. function SM4(e, t, n) {
  2. var i = 0
  3. , o = 32
  4. , a = 16
  5. , s = [214, 144, 233, 254, 204, 225, 61, 183, 22, 182, 20, 194, 40, 251, 44, 5, 43, 103, 154, 118, 42, 190, 4, 195, 170, 68, 19, 38, 73, 134, 6, 153, 156, 66, 80, 244, 145, 239, 152, 122, 51, 84, 11, 67, 237, 207, 172, 98, 228, 179, 28, 169, 201, 8, 232, 149, 128, 223, 148, 250, 117, 143, 63, 166, 71, 7, 167, 252, 243, 115, 23, 186, 131, 89, 60, 25, 230, 133, 79, 168, 104, 107, 129, 178, 113, 100, 218, 139, 248, 235, 15, 75, 112, 86, 157, 53, 30, 36, 14, 94, 99, 88, 209, 162, 37, 34, 124, 59, 1, 33, 120, 135, 212, 0, 70, 87, 159, 211, 39, 82, 76, 54, 2, 231, 160, 196, 200, 158, 234, 191, 138, 210, 64, 199, 56, 181, 163, 247, 242, 206, 249, 97, 21, 161, 224, 174, 93, 164, 155, 52, 26, 85, 173, 147, 50, 48, 245, 140, 177, 227, 29, 246, 226, 46, 130, 102, 202, 96, 192, 41, 35, 171, 13, 83, 78, 111, 213, 219, 55, 69, 222, 253, 142, 47, 3, 255, 106, 114, 109, 108, 91, 81, 141, 27, 175, 146, 187, 221, 188, 127, 17, 217, 92, 65, 31, 16, 90, 216, 10, 193, 49, 136, 165, 205, 123, 189, 45, 116, 208, 18, 184, 229, 180, 176, 137, 105, 151, 74, 12, 150, 119, 126, 101, 185, 241, 9, 197, 110, 198, 132, 24, 240, 125, 236, 58, 220, 77, 32, 121, 238, 95, 62, 215, 203, 57, 72]
  6. , u = [462357, 472066609, 943670861, 1415275113, 1886879365, 2358483617, 2830087869, 3301692121, 3773296373, 4228057617, 404694573, 876298825, 1347903077, 1819507329, 2291111581, 2762715833, 3234320085, 3705924337, 4177462797, 337322537, 808926789, 1280531041, 1752135293, 2223739545, 2695343797, 3166948049, 3638552301, 4110090761, 269950501, 741554753, 1213159005, 1684763257];
  7. function c(t) {
  8. for (var e = [], n = 0, r = t.length; n < r; n += 2)
  9. e.push(parseInt(t.substr(n, 2), 16));
  10. return e
  11. }
  12. function f(t) {
  13. return t.map((function (t) {
  14. return t = t.toString(16),
  15. 1 === t.length ? "0" + t : t
  16. }
  17. )).join("")
  18. }
  19. function l(t) {
  20. for (var e = [], n = 0, r = t.length; n < r; n++) {
  21. var i = t.charCodeAt(n);
  22. if (i <= 127)
  23. e.push(i);
  24. else if (i <= 2047)
  25. e.push(192 | i >>> 6),
  26. e.push(128 | 63 & i);
  27. else if (i <= 55295 || i >= 57344 && i <= 65535)
  28. e.push(224 | i >>> 12),
  29. e.push(128 | i >>> 6 & 63),
  30. e.push(128 | 63 & i);
  31. else {
  32. if (!(i >= 65536 && i <= 1114111))
  33. throw e.push(i),
  34. new Error("input is not supported");
  35. n++,
  36. e.push(240 | i >>> 18 & 28),
  37. e.push(128 | i >>> 12 & 63),
  38. e.push(128 | i >>> 6 & 63),
  39. e.push(128 | 63 & i)
  40. }
  41. }
  42. return e
  43. }
  44. function h(t) {
  45. for (var e = [], n = 0, r = t.length; n < r; n++)
  46. t[n] >= 240 && t[n] <= 247 ? (e.push(String.fromCharCode(((7 & t[n]) << 18) + ((63 & t[n + 1]) << 12) + ((63 & t[n + 2]) << 6) + (63 & t[n + 3]))),
  47. n += 3) : t[n] >= 224 && t[n] <= 239 ? (e.push(String.fromCharCode(((15 & t[n]) << 12) + ((63 & t[n + 1]) << 6) + (63 & t[n + 2]))),
  48. n += 2) : t[n] >= 192 && t[n] <= 223 ? (e.push(String.fromCharCode(((31 & t[n]) << 6) + (63 & t[n + 1]))),
  49. n++) : e.push(String.fromCharCode(t[n]));
  50. return e.join("")
  51. }
  52. function d(t, e) {
  53. return t << e | t >>> 32 - e
  54. }
  55. function p(t) {
  56. return (255 & s[t >>> 24 & 255]) << 24 | (255 & s[t >>> 16 & 255]) << 16 | (255 & s[t >>> 8 & 255]) << 8 | 255 & s[255 & t]
  57. }
  58. function v(t) {
  59. return t ^ d(t, 2) ^ d(t, 10) ^ d(t, 18) ^ d(t, 24)
  60. }
  61. function y(t) {
  62. return t ^ d(t, 13) ^ d(t, 23)
  63. }
  64. function g(t, e, n) {
  65. for (var r = new Array(4), i = new Array(4), o = 0; o < 4; o++)
  66. i[0] = 255 & t[0 + 4 * o],
  67. i[1] = 255 & t[1 + 4 * o],
  68. i[2] = 255 & t[2 + 4 * o],
  69. i[3] = 255 & t[3 + 4 * o],
  70. r[o] = i[0] << 24 | i[1] << 16 | i[2] << 8 | i[3];
  71. for (var a, s = 0; s < 32; s += 4)
  72. a = r[1] ^ r[2] ^ r[3] ^ n[s + 0],
  73. r[0] ^= v(p(a)),
  74. a = r[2] ^ r[3] ^ r[0] ^ n[s + 1],
  75. r[1] ^= v(p(a)),
  76. a = r[3] ^ r[0] ^ r[1] ^ n[s + 2],
  77. r[2] ^= v(p(a)),
  78. a = r[0] ^ r[1] ^ r[2] ^ n[s + 3],
  79. r[3] ^= v(p(a));
  80. for (var u = 0; u < 16; u += 4)
  81. e[u] = r[3 - u / 4] >>> 24 & 255,
  82. e[u + 1] = r[3 - u / 4] >>> 16 & 255,
  83. e[u + 2] = r[3 - u / 4] >>> 8 & 255,
  84. e[u + 3] = 255 & r[3 - u / 4]
  85. }
  86. function m(t, e, n) {
  87. for (var r = new Array(4), o = new Array(4), a = 0; a < 4; a++)
  88. o[0] = 255 & t[0 + 4 * a],
  89. o[1] = 255 & t[1 + 4 * a],
  90. o[2] = 255 & t[2 + 4 * a],
  91. o[3] = 255 & t[3 + 4 * a],
  92. r[a] = o[0] << 24 | o[1] << 16 | o[2] << 8 | o[3];
  93. r[0] ^= 2746333894,
  94. r[1] ^= 1453994832,
  95. r[2] ^= 1736282519,
  96. r[3] ^= 2993693404;
  97. for (var s, c = 0; c < 32; c += 4)
  98. s = r[1] ^ r[2] ^ r[3] ^ u[c + 0],
  99. e[c + 0] = r[0] ^= y(p(s)),
  100. s = r[2] ^ r[3] ^ r[0] ^ u[c + 1],
  101. e[c + 1] = r[1] ^= y(p(s)),
  102. s = r[3] ^ r[0] ^ r[1] ^ u[c + 2],
  103. e[c + 2] = r[2] ^= y(p(s)),
  104. s = r[0] ^ r[1] ^ r[2] ^ u[c + 3],
  105. e[c + 3] = r[3] ^= y(p(s));
  106. if (n === i)
  107. for (var f, l = 0; l < 16; l++)
  108. f = e[l],
  109. e[l] = e[31 - l],
  110. e[31 - l] = f
  111. }
  112. function b(t, e, n) {
  113. var s = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}
  114. , u = s.padding
  115. , d = void 0 === u ? "pkcs#5" : u
  116. , p = (s.mode,
  117. s.output)
  118. , v = void 0 === p ? "string" : p;
  119. if ("string" === typeof e && (e = c(e)),
  120. 16 !== e.length)
  121. throw new Error("key is invalid");
  122. if (t = "string" === typeof t ? n !== i ? l(t) : c(t) : r(t),
  123. "pkcs#5" === d && n !== i)
  124. for (var y = a - t.length % a, b = 0; b < y; b++)
  125. t.push(y);
  126. var _ = new Array(o);
  127. m(e, _, n);
  128. var w = []
  129. , x = t.length
  130. , k = 0;
  131. while (x >= a) {
  132. var A = t.slice(k, k + 16)
  133. , S = new Array(16);
  134. g(A, S, _);
  135. for (var O = 0; O < a; O++)
  136. w[k + O] = S[O];
  137. x -= a,
  138. k += a
  139. }
  140. if ("pkcs#5" === d && n === i) {
  141. var E = w[w.length - 1];
  142. w.splice(w.length - E, E)
  143. }
  144. return "array" !== v ? n !== i ? f(w) : h(w) : w
  145. }
  146. return b(e, t, n);
  147. };
  148. w = "dt!Ppb9t"
  149. function sl(e) {
  150. for (var n = "", A = 0; A < e.length; A++)
  151. "" === n ? n = e.charCodeAt(A).toString(16) : n += e.charCodeAt(A).toString(16);
  152. return n
  153. }
  154. function sdate(e) {
  155. var n = {
  156. "M+": new Date().getMonth() + 1,
  157. "d+": new Date().getDate(),
  158. "h+": new Date().getHours() % 12 == 0 ? 12 : new Date().getHours() % 12,
  159. "H+": new Date().getHours(),
  160. "m+": new Date().getMinutes(),
  161. "s+": new Date().getSeconds(),
  162. "q+": Math.floor((new Date().getMonth() + 3) / 3),
  163. S: new Date().getMilliseconds()
  164. }
  165. , A = {
  166. 0: "日",
  167. 1: "一",
  168. 2: "二",
  169. 3: "三",
  170. 4: "四",
  171. 5: "五",
  172. 6: "六"
  173. };
  174. for (var t in /(y+)/.test(e) && (e = e.replace(RegExp.$1, (new Date().getFullYear() + "").substr(4 - RegExp.$1.length))),
  175. /(E+)/.test(e) && (e = e.replace(RegExp.$1, (RegExp.$1.length > 1 ? RegExp.$1.length > 2 ? "星期" : "周" : "") + A[new Date().getDay() + ""])),
  176. n)
  177. new RegExp("(" + t + ")").test(e) && (e = e.replace(RegExp.$1, 1 == RegExp.$1.length ? n[t] : ("00" + n[t]).substr(("" + n[t]).length)));
  178. return e
  179. }
  180. function signature(n, t) {
  181. var K = [
  182. "/auth/oauth2/getPublicKey",
  183. "/auth/white/sendSm4",
  184. "/auth/user/logout",
  185. "/auth/user/checklogin",
  186. "/auth/qrcode/verifyQRCode",
  187. "/auth/message/sendSmsCode",
  188. "/auth/oauth2/revokeToken",
  189. "/auth/white/getAreCode",
  190. "/auth/white/getSecondAuthInfo",
  191. "/auth/oauth2/checkRedirectUrl",
  192. "/auth/message/captchaImage"
  193. ]
  194. var p = {},
  195. l = "";
  196. p["zipCode"] = "0";
  197. u = t;
  198. c = u.substring(0, 8) + w;
  199. "post" === n.method && (K.indexOf(n.url) !== -1 ? (p["encryptCode"] = "0",
  200. p.datagram = JSON.stringify(n.data)) : (P = JSON.stringify(n.data),
  201. l = SM4(P, sl(c), 1),
  202. p.datagram = l,
  203. p["encryptCode"] = "2"));
  204. p["timestamp"] = sdate("yyyyMMddHHmmss");
  205. p["access_token"] = "";
  206. p["signtype"] = "HMacSHA256";
  207. p["signature"] = CryptoJS.HmacSHA256(p["zipCode"] + p["encryptCode"] + l + p["timestamp"] + p["signtype"], u).toString(CryptoJS.enc.Hex);
  208. return p
  209. }
  210. function responseParse(n, new_key16) {
  211. if ("2" === n.encryptCode) {
  212. var t = new_key16.substring(0, 8) + w;
  213. n.datagram = SM4(n.datagram, sl(t), 0)
  214. }
  215. return n
  216. }
  217. function clientId(e) {
  218. for (var n = e.indexOf("?") + 1, A = e.substr(n), t = A.split("&"), f = {}, v = 0; v < t.length; v++) {
  219. var r = t[v].split("=")
  220. , d = r[0]
  221. , p = r[1];
  222. f[d] = p
  223. }
  224. return f
  225. }