github.com/fzfile/BaiduPCS-Go@v0.0.0-20200606205115-4408961cf336/baidupcs/netdisksign/sign2.js (about) 1 function s(j, r) { 2 var a = []; 3 var p = []; 4 var o = ""; 5 var v = j.length; 6 for (var q = 0; q < 256; q++) { 7 a[q] = j.substr((q % v), 1).charCodeAt(0); 8 // console.log(q, q%v); 9 p[q] = q; 10 // console.log(q, a[q], p[q]); 11 } 12 for (var u = q = 0; q < 256; q++) { 13 u = (u + p[q] + a[q]) % 256; 14 var t = p[q]; 15 p[q] = p[u]; 16 p[u] = t; 17 } 18 // console.log(p) 19 for (var i = u = q = 0; q < r.length; q++) { 20 i = (i + 1) % 256; 21 u = (u + p[i]) % 256; 22 var t = p[i]; 23 p[i] = p[u]; 24 p[u] = t; 25 k = p[((p[i] + p[u]) % 256)]; 26 o += String.fromCharCode(r.charCodeAt(q) ^ k); 27 } 28 return o; 29 }; 30 31 function base64encode(t) { 32 var r, e, a, o, n, i, s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 33 for (a = t.length, 34 e = 0, 35 r = ""; a > e; ) { 36 if (o = 255 & t.charCodeAt(e++), 37 e == a) { 38 r += s.charAt(o >> 2), 39 r += s.charAt((3 & o) << 4), 40 r += "=="; 41 break 42 } 43 if (n = t.charCodeAt(e++), 44 e == a) { 45 r += s.charAt(o >> 2), 46 r += s.charAt((3 & o) << 4 | (240 & n) >> 4), 47 r += s.charAt((15 & n) << 2), 48 r += "="; 49 break 50 } 51 i = t.charCodeAt(e++), 52 r += s.charAt(o >> 2), 53 r += s.charAt((3 & o) << 4 | (240 & n) >> 4), 54 r += s.charAt((15 & n) << 2 | (192 & i) >> 6), 55 r += s.charAt(63 & i) 56 } 57 return r 58 } 59 60 var s1 = s("e8c7d729eea7b54551aa594f942decbe", "37dbe07ade9359c1aa70807e847f768c13360ad2"); 61 console.log(s1); 62 console.log(base64encode(s1));