安全矩阵

 找回密码
 立即注册
搜索
查看: 2115|回复: 0

常见的加密方式实例

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2022-1-7 18:40:23 | 显示全部楼层 |阅读模式
原文链接:常见的加密方式实例

前言通常在我们测逻辑漏洞或写爬虫的时候,如果遇到前端加密,我们可以选择将加密算法拖出来,对自己调试的参数进行加密。
MD5加密实例1.登录测试,获取到post参数

2.在疑似点下断,并再次发包

3.查看此处值与加密后的值相同,所以这个就是加密算法

4.这是一个闭包函数,实现加密算法
~这里可以直接用md5进行加密测试,但不排除他命名为md5(),实际上自己实现的加密算法。~
  1. (function(g) {
  2.     function o(u, z) {
  3.         var w = (u & 65535) + (z & 65535)
  4.           , v = (u >> 16) + (z >> 16) + (w >> 16);
  5.         return (v << 16) | (w & 65535)
  6.     }
  7.     function s(u, v) {
  8.         return (u << v) | (u >>> (32 - v))
  9.     }
  10.     function c(A, w, v, u, z, y) {
  11.         return o(s(o(o(w, A), o(u, y)), z), v)
  12.     }
  13.     function b(w, v, B, A, u, z, y) {
  14.         return c((v & B) | ((~v) & A), w, v, u, z, y)
  15.     }
  16.     function i(w, v, B, A, u, z, y) {
  17.         return c((v & A) | (B & (~A)), w, v, u, z, y)
  18.     }
  19.     function n(w, v, B, A, u, z, y) {
  20.         return c(v ^ B ^ A, w, v, u, z, y)
  21.     }
  22.     function a(w, v, B, A, u, z, y) {
  23.         return c(B ^ (v | (~A)), w, v, u, z, y)
  24.     }
  25.     function d(F, A) {
  26.         F[A >> 5] |= 128 << ((A) % 32);
  27.         F[(((A + 64) >>> 9) << 4) + 14] = A;
  28.         var w, z, y, v, u, E = 1732584193, D = -271733879, C = -1732584194, B = 271733878;
  29.         for (w = 0; w < F.length; w += 16) {
  30.             z = E;
  31.             y = D;
  32.             v = C;
  33.             u = B;
  34.             E = b(E, D, C, B, F[w], 7, -680876936);
  35.             B = b(B, E, D, C, F[w + 1], 12, -389564586);
  36.             C = b(C, B, E, D, F[w + 2], 17, 606105819);
  37.             D = b(D, C, B, E, F[w + 3], 22, -1044525330);
  38.             E = b(E, D, C, B, F[w + 4], 7, -176418897);
  39.             B = b(B, E, D, C, F[w + 5], 12, 1200080426);
  40.             C = b(C, B, E, D, F[w + 6], 17, -1473231341);
  41.             D = b(D, C, B, E, F[w + 7], 22, -45705983);
  42.             E = b(E, D, C, B, F[w + 8], 7, 1770035416);
  43.             B = b(B, E, D, C, F[w + 9], 12, -1958414417);
  44.             C = b(C, B, E, D, F[w + 10], 17, -42063);
  45.             D = b(D, C, B, E, F[w + 11], 22, -1990404162);
  46.             E = b(E, D, C, B, F[w + 12], 7, 1804603682);
  47.             B = b(B, E, D, C, F[w + 13], 12, -40341101);
  48.             C = b(C, B, E, D, F[w + 14], 17, -1502002290);
  49.             D = b(D, C, B, E, F[w + 15], 22, 1236535329);
  50.             E = i(E, D, C, B, F[w + 1], 5, -165796510);
  51.             B = i(B, E, D, C, F[w + 6], 9, -1069501632);
  52.             C = i(C, B, E, D, F[w + 11], 14, 643717713);
  53.             D = i(D, C, B, E, F[w], 20, -373897302);
  54.             E = i(E, D, C, B, F[w + 5], 5, -701558691);
  55.             B = i(B, E, D, C, F[w + 10], 9, 38016083);
  56.             C = i(C, B, E, D, F[w + 15], 14, -660478335);
  57.             D = i(D, C, B, E, F[w + 4], 20, -405537848);
  58.             E = i(E, D, C, B, F[w + 9], 5, 568446438);
  59.             B = i(B, E, D, C, F[w + 14], 9, -1019803690);
  60.             C = i(C, B, E, D, F[w + 3], 14, -187363961);
  61.             D = i(D, C, B, E, F[w + 8], 20, 1163531501);
  62.             E = i(E, D, C, B, F[w + 13], 5, -1444681467);
  63.             B = i(B, E, D, C, F[w + 2], 9, -51403784);
  64.             C = i(C, B, E, D, F[w + 7], 14, 1735328473);
  65.             D = i(D, C, B, E, F[w + 12], 20, -1926607734);
  66.             E = n(E, D, C, B, F[w + 5], 4, -378558);
  67.             B = n(B, E, D, C, F[w + 8], 11, -2022574463);
  68.             C = n(C, B, E, D, F[w + 11], 16, 1839030562);
  69.             D = n(D, C, B, E, F[w + 14], 23, -35309556);
  70.             E = n(E, D, C, B, F[w + 1], 4, -1530992060);
  71.             B = n(B, E, D, C, F[w + 4], 11, 1272893353);
  72.             C = n(C, B, E, D, F[w + 7], 16, -155497632);
  73.             D = n(D, C, B, E, F[w + 10], 23, -1094730640);
  74.             E = n(E, D, C, B, F[w + 13], 4, 681279174);
  75.             B = n(B, E, D, C, F[w], 11, -358537222);
  76.             C = n(C, B, E, D, F[w + 3], 16, -722521979);
  77.             D = n(D, C, B, E, F[w + 6], 23, 76029189);
  78.             E = n(E, D, C, B, F[w + 9], 4, -640364487);
  79.             B = n(B, E, D, C, F[w + 12], 11, -421815835);
  80.             C = n(C, B, E, D, F[w + 15], 16, 530742520);
  81.             D = n(D, C, B, E, F[w + 2], 23, -995338651);
  82.             E = a(E, D, C, B, F[w], 6, -198630844);
  83.             B = a(B, E, D, C, F[w + 7], 10, 1126891415);
  84.             C = a(C, B, E, D, F[w + 14], 15, -1416354905);
  85.             D = a(D, C, B, E, F[w + 5], 21, -57434055);
  86.             E = a(E, D, C, B, F[w + 12], 6, 1700485571);
  87.             B = a(B, E, D, C, F[w + 3], 10, -1894986606);
  88.             C = a(C, B, E, D, F[w + 10], 15, -1051523);
  89.             D = a(D, C, B, E, F[w + 1], 21, -2054922799);
  90.             E = a(E, D, C, B, F[w + 8], 6, 1873313359);
  91.             B = a(B, E, D, C, F[w + 15], 10, -30611744);
  92.             C = a(C, B, E, D, F[w + 6], 15, -1560198380);
  93.             D = a(D, C, B, E, F[w + 13], 21, 1309151649);
  94.             E = a(E, D, C, B, F[w + 4], 6, -145523070);
  95.             B = a(B, E, D, C, F[w + 11], 10, -1120210379);
  96.             C = a(C, B, E, D, F[w + 2], 15, 718787259);
  97.             D = a(D, C, B, E, F[w + 9], 21, -343485551);
  98.             E = o(E, z);
  99.             D = o(D, y);
  100.             C = o(C, v);
  101.             B = o(B, u)
  102.         }
  103.         return [E, D, C, B]
  104.     }
  105.     function p(v) {
  106.         var w, u = "";
  107.         for (w = 0; w < v.length * 32; w += 8) {
  108.             u += String.fromCharCode((v[w >> 5] >>> (w % 32)) & 255)
  109.         }
  110.         return u
  111.     }
  112.     function j(v) {
  113.         var w, u = [];
  114.         u[(v.length >> 2) - 1] = undefined;
  115.         for (w = 0; w < u.length; w += 1) {
  116.             u[w] = 0
  117.         }
  118.         for (w = 0; w < v.length * 8; w += 8) {
  119.             u[w >> 5] |= (v.charCodeAt(w / 8) & 255) << (w % 32)
  120.         }
  121.         return u
  122.     }
  123.     function k(u) {
  124.         return p(d(j(u), u.length * 8))
  125.     }
  126.     function f(w, z) {
  127.         var v, y = j(w), u = [], x = [], A;
  128.         u[15] = x[15] = undefined;
  129.         if (y.length > 16) {
  130.             y = d(y, w.length * 8)
  131.         }
  132.         for (v = 0; v < 16; v += 1) {
  133.             u[v] = y[v] ^ 909522486;
  134.             x[v] = y[v] ^ 1549556828
  135.         }
  136.         A = d(u.concat(j(z)), 512 + z.length * 8);
  137.         return p(d(x.concat(A), 512 + 128))
  138.     }
  139.     function t(w) {
  140.         var z = "0123456789abcdef", v = "", u, y;
  141.         for (y = 0; y < w.length; y += 1) {
  142.             u = w.charCodeAt(y);
  143.             v += z.charAt((u >>> 4) & 15) + z.charAt(u & 15)
  144.         }
  145.         return v
  146.     }
  147.     function m(u) {
  148.         return unescape(encodeURIComponent(u))
  149.     }
  150.     function q(u) {
  151.         return k(m(u))
  152.     }
  153.     function l(u) {
  154.         return t(q(u))
  155.     }
  156.     function h(u, v) {
  157.         return f(m(u), m(v))
  158.     }
  159.     function r(u, v) {
  160.         return t(h(u, v))
  161.     }
  162.     g.md5 = function(v, w, u) {
  163.         if (!w) {
  164.             if (!u) {
  165.                 return l(v)
  166.             } else {
  167.                 return q(v)
  168.             }
  169.         }
  170.         if (!u) {
  171.             return r(w, v)
  172.         } else {
  173.             return h(w, v)
  174.         }
  175.     }
  176. }(typeof jQuery === "function" ? jQuery : this));
复制代码

5.调试这段代码

6.python执行

RSA非对称密钥加密实例1.登录发包

2.疑似点下断

3.查找加密算法


4.加密算法实现and调试

  1. var RSAPublicKey = function($modulus_hex, $encryptionExponent_hex) {
  2. this.modulus = new BigInteger( $modulus_hex, 16);
  3. this.encryptionExponent = new BigInteger( $encryptionExponent_hex, 16);
  4. };

  5. var Base64 = {
  6. base64: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
  7. encode: function($input) {
  8.   if (!$input) {
  9.    return false;
  10.   }
  11.   var $output = "";
  12.   var $chr1, $chr2, $chr3;
  13.   var $enc1, $enc2, $enc3, $enc4;
  14.   var $i = 0;
  15.   do {
  16.    $chr1 = $input.charCodeAt($i++);
  17.    $chr2 = $input.charCodeAt($i++);
  18.    $chr3 = $input.charCodeAt($i++);
  19.    $enc1 = $chr1 >> 2;
  20.    $enc2 = (($chr1 & 3) << 4) | ($chr2 >> 4);
  21.    $enc3 = (($chr2 & 15) << 2) | ($chr3 >> 6);
  22.    $enc4 = $chr3 & 63;
  23.    if (isNaN($chr2)) $enc3 = $enc4 = 64;
  24.    else if (isNaN($chr3)) $enc4 = 64;
  25.    $output += this.base64.charAt($enc1) + this.base64.charAt($enc2) + this.base64.charAt($enc3) + this.base64.charAt($enc4);
  26.   } while ($i < $input.length);
  27.   return $output;
  28. },
  29. decode: function($input) {
  30.   if(!$input) return false;
  31.   $input = $input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
  32.   var $output = "";
  33.   var $enc1, $enc2, $enc3, $enc4;
  34.   var $i = 0;
  35.   do {
  36.    $enc1 = this.base64.indexOf($input.charAt($i++));
  37.    $enc2 = this.base64.indexOf($input.charAt($i++));
  38.    $enc3 = this.base64.indexOf($input.charAt($i++));
  39.    $enc4 = this.base64.indexOf($input.charAt($i++));
  40.    $output += String.fromCharCode(($enc1 << 2) | ($enc2 >> 4));
  41.    if ($enc3 != 64) $output += String.fromCharCode((($enc2 & 15) << 4) | ($enc3 >> 2));
  42.    if ($enc4 != 64) $output += String.fromCharCode((($enc3 & 3) << 6) | $enc4);
  43.   } while ($i < $input.length);
  44.   return $output;
  45. }
  46. };

  47. var Hex = {
  48. hex: "0123456789abcdef",
  49. encode: function($input) {
  50.   if(!$input) return false;
  51.   var $output = "";
  52.   var $k;
  53.   var $i = 0;
  54.   do {
  55.    $k = $input.charCodeAt($i++);
  56.    $output += this.hex.charAt(($k >> 4) &0xf) + this.hex.charAt($k & 0xf);
  57.   } while ($i < $input.length);
  58.   return $output;
  59. },
  60. decode: function($input) {
  61.   if(!$input) return false;
  62.   $input = $input.replace(/[^0-9abcdef]/g, "");
  63.   var $output = "";
  64.   var $i = 0;
  65.   do {
  66.    $output += String.fromCharCode(((this.hex.indexOf($input.charAt($i++)) << 4) & 0xf0) | (this.hex.indexOf($input.charAt($i++)) & 0xf));
  67.   } while ($i < $input.length);
  68.   return $output;
  69. }
  70. };
复制代码

  •         BigInteger未定义,查找这个函数实现并贴上去




  1. function bnpCopyTo(r) {
  2. for(var i = this.t-1; i >= 0; --i) r[i] = this[i];
  3. r.t = this.t;
  4. r.s = this.s;
  5. }

  6. // (protected) set from integer value x, -DV <= x < DV
  7. function bnpFromInt(x) {
  8. this.t = 1;
  9. this.s = (x<0)?-1:0;
  10. if(x > 0) this[0] = x;
  11. else if(x < -1) this[0] = x+DV;
  12. else this.t = 0;
  13. }

  14. // return bigint initialized to value
  15. function nbv(i) { var r = nbi(); r.fromInt(i); return r; }

  16. // (protected) set from string and radix
  17. function bnpFromString(s,b) {
  18. var k;
  19. if(b == 16) k = 4;
  20. else if(b == 8) k = 3;
  21. else if(b == 256) k = 8; // byte array
  22. else if(b == 2) k = 1;
  23. else if(b == 32) k = 5;
  24. else if(b == 4) k = 2;
  25. else { this.fromRadix(s,b); return; }
  26. this.t = 0;
  27. this.s = 0;
  28. var i = s.length, mi = false, sh = 0;
  29. while(--i >= 0) {
  30.   var x = (k==8)?s[i]&0xff:intAt(s,i);
  31.   if(x < 0) {
  32.    if(s.charAt(i) == "-") mi = true;
  33.    continue;
  34.   }
  35.   mi = false;
  36.   if(sh == 0)
  37.    this[this.t++] = x;
  38.   else if(sh+k > this.DB) {
  39.    this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh;
  40.    this[this.t++] = (x>>(this.DB-sh));
  41.   }
  42.   else
  43.    this[this.t-1] |= x<<sh;
  44.   sh += k;
  45.   if(sh >= this.DB) sh -= this.DB;
  46. }
  47. if(k == 8 && (s[0]&0x80) != 0) {
  48.   this.s = -1;
  49.   if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh;
  50. }
  51. this.clamp();
  52. if(mi) BigInteger.ZERO.subTo(this,this);
  53. }

  54. // (protected) clamp off excess high words
  55. function bnpClamp() {
  56. var c = this.s&this.DM;
  57. while(this.t > 0 && this[this.t-1] == c) --this.t;
  58. }

  59. // (public) return string representation in given radix
  60. function bnToString(b) {
  61. if(this.s < 0) return "-"+this.negate().toString(b);
  62. var k;
  63. if(b == 16) k = 4;
  64. else if(b == 8) k = 3;
  65. else if(b == 2) k = 1;
  66. else if(b == 32) k = 5;
  67. else if(b == 4) k = 2;
  68. else return this.toRadix(b);
  69. var km = (1<<k)-1, d, m = false, r = "", i = this.t;
  70. var p = this.DB-(i*this.DB)%k;
  71. if(i-- > 0) {
  72.   if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }
  73.   while(i >= 0) {
  74.    if(p < k) {
  75.     d = (this[i]&((1<<p)-1))<<(k-p);
  76.     d |= this[--i]>>(p+=this.DB-k);
  77.    }
  78.    else {
  79.     d = (this[i]>>(p-=k))&km;
  80.     if(p <= 0) { p += this.DB; --i; }
  81.    }
  82.    if(d > 0) m = true;
  83.    if(m) r += int2char(d);
  84.   }
  85. }
  86. return m?r:"0";
  87. }

  88. // (public) -this
  89. function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }

  90. // (public) |this|
  91. function bnAbs() { return (this.s<0)?this.negate():this; }

  92. // (public) return + if this > a, - if this < a, 0 if equal
  93. function bnCompareTo(a) {
  94. var r = this.s-a.s;
  95. if(r != 0) return r;
  96. var i = this.t;
  97. r = i-a.t;
  98. if(r != 0) return r;
  99. while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;
  100. return 0;
  101. }

  102. // returns bit length of the integer x
  103. function nbits(x) {
  104. var r = 1, t;
  105. if((t=x>>>16) != 0) { x = t; r += 16; }
  106. if((t=x>>8) != 0) { x = t; r += 8; }
  107. if((t=x>>4) != 0) { x = t; r += 4; }
  108. if((t=x>>2) != 0) { x = t; r += 2; }
  109. if((t=x>>1) != 0) { x = t; r += 1; }
  110. return r;
  111. }

  112. // (public) return the number of bits in "this"
  113. function bnBitLength() {
  114. if(this.t <= 0) return 0;
  115. return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));
  116. }

  117. // (protected) r = this << n*DB
  118. function bnpDLShiftTo(n,r) {
  119. var i;
  120. for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];
  121. for(i = n-1; i >= 0; --i) r[i] = 0;
  122. r.t = this.t+n;
  123. r.s = this.s;
  124. }

  125. // (protected) r = this >> n*DB
  126. function bnpDRShiftTo(n,r) {
  127. for(var i = n; i < this.t; ++i) r[i-n] = this[i];
  128. r.t = Math.max(this.t-n,0);
  129. r.s = this.s;
  130. }

  131. // (protected) r = this << n
  132. function bnpLShiftTo(n,r) {
  133. var bs = n%this.DB;
  134. var cbs = this.DB-bs;
  135. var bm = (1<<cbs)-1;
  136. var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i;
  137. for(i = this.t-1; i >= 0; --i) {
  138.   r[i+ds+1] = (this[i]>>cbs)|c;
  139.   c = (this[i]&bm)<<bs;
  140. }
  141. for(i = ds-1; i >= 0; --i) r[i] = 0;
  142. r[ds] = c;
  143. r.t = this.t+ds+1;
  144. r.s = this.s;
  145. r.clamp();
  146. }

  147. // (protected) r = this >> n
  148. function bnpRShiftTo(n,r) {
  149. r.s = this.s;
  150. var ds = Math.floor(n/this.DB);
  151. if(ds >= this.t) { r.t = 0; return; }
  152. var bs = n%this.DB;
  153. var cbs = this.DB-bs;
  154. var bm = (1<<bs)-1;
  155. r[0] = this[ds]>>bs;
  156. for(var i = ds+1; i < this.t; ++i) {
  157.   r[i-ds-1] |= (this[i]&bm)<<cbs;
  158.   r[i-ds] = this[i]>>bs;
  159. }
  160. if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<<cbs;
  161. r.t = this.t-ds;
  162. r.clamp();
  163. }
复制代码

5.调试加密算法

6.python执行

自写加密算法加密实例1.登录发包

2.疑似点下断调试

3.查找加密算法

4.加密算法实现

  1. function p(e, t) {
  2. var n = (65535 & e) + (65535 & t);
  3. return (e >> 16) + (t >> 16) + (n >> 16) << 16 | 65535 & n
  4. }
  5. function a(e, t, n, o, i, r) {
  6. return p((s = p(p(t, e), p(o, r))) << (a = i) | s >>> 32 - a, n);
  7. var s, a
  8. }
  9. function l(e, t, n, o, i, r, s) {
  10. return a(t & n | ~t & o, e, t, i, r, s)
  11. }
  12. function m(e, t, n, o, i, r, s) {
  13. return a(t & o | n & ~o, e, t, i, r, s)
  14. }
  15. function f(e, t, n, o, i, r, s) {
  16. return a(t ^ n ^ o, e, t, i, r, s)
  17. }
  18. function g(e, t, n, o, i, r, s) {
  19. return a(n ^ (t | ~o), e, t, i, r, s)
  20. }
  21. function c(e, t) {
  22. e[t >> 5] |= 128 << t % 32,
  23. e[14 + (t + 64 >>> 9 << 4)] = t;
  24. var n, o, i, r, s, a = 1732584193,
  25. c = -271733879,
  26. u = -1732584194,
  27. d = 271733878;
  28. for (n = 0; n < e.length; n += 16) a = l(o = a, i = c, r = u, s = d, e[n], 7, -680876936),
  29. d = l(d, a, c, u, e[n + 1], 12, -389564586),
  30. u = l(u, d, a, c, e[n + 2], 17, 606105819),
  31. c = l(c, u, d, a, e[n + 3], 22, -1044525330),
  32. a = l(a, c, u, d, e[n + 4], 7, -176418897),
  33. d = l(d, a, c, u, e[n + 5], 12, 1200080426),
  34. u = l(u, d, a, c, e[n + 6], 17, -1473231341),
  35. c = l(c, u, d, a, e[n + 7], 22, -45705983),
  36. a = l(a, c, u, d, e[n + 8], 7, 1770035416),
  37. d = l(d, a, c, u, e[n + 9], 12, -1958414417),
  38. u = l(u, d, a, c, e[n + 10], 17, -42063),
  39. c = l(c, u, d, a, e[n + 11], 22, -1990404162),
  40. a = l(a, c, u, d, e[n + 12], 7, 1804603682),
  41. d = l(d, a, c, u, e[n + 13], 12, -40341101),
  42. u = l(u, d, a, c, e[n + 14], 17, -1502002290),
  43. a = m(a, c = l(c, u, d, a, e[n + 15], 22, 1236535329), u, d, e[n + 1], 5, -165796510),
  44. d = m(d, a, c, u, e[n + 6], 9, -1069501632),
  45. u = m(u, d, a, c, e[n + 11], 14, 643717713),
  46. c = m(c, u, d, a, e[n], 20, -373897302),
  47. a = m(a, c, u, d, e[n + 5], 5, -701558691),
  48. d = m(d, a, c, u, e[n + 10], 9, 38016083),
  49. u = m(u, d, a, c, e[n + 15], 14, -660478335),
  50. c = m(c, u, d, a, e[n + 4], 20, -405537848),
  51. a = m(a, c, u, d, e[n + 9], 5, 568446438),
  52. d = m(d, a, c, u, e[n + 14], 9, -1019803690),
  53. u = m(u, d, a, c, e[n + 3], 14, -187363961),
  54. c = m(c, u, d, a, e[n + 8], 20, 1163531501),
  55. a = m(a, c, u, d, e[n + 13], 5, -1444681467),
  56. d = m(d, a, c, u, e[n + 2], 9, -51403784),
  57. u = m(u, d, a, c, e[n + 7], 14, 1735328473),
  58. a = f(a, c = m(c, u, d, a, e[n + 12], 20, -1926607734), u, d, e[n + 5], 4, -378558),
  59. d = f(d, a, c, u, e[n + 8], 11, -2022574463),
  60. u = f(u, d, a, c, e[n + 11], 16, 1839030562),
  61. c = f(c, u, d, a, e[n + 14], 23, -35309556),
  62. a = f(a, c, u, d, e[n + 1], 4, -1530992060),
  63. d = f(d, a, c, u, e[n + 4], 11, 1272893353),
  64. u = f(u, d, a, c, e[n + 7], 16, -155497632),
  65. c = f(c, u, d, a, e[n + 10], 23, -1094730640),
  66. a = f(a, c, u, d, e[n + 13], 4, 681279174),
  67. d = f(d, a, c, u, e[n], 11, -358537222),
  68. u = f(u, d, a, c, e[n + 3], 16, -722521979),
  69. c = f(c, u, d, a, e[n + 6], 23, 76029189),
  70. a = f(a, c, u, d, e[n + 9], 4, -640364487),
  71. d = f(d, a, c, u, e[n + 12], 11, -421815835),
  72. u = f(u, d, a, c, e[n + 15], 16, 530742520),
  73. a = g(a, c = f(c, u, d, a, e[n + 2], 23, -995338651), u, d, e[n], 6, -198630844),
  74. d = g(d, a, c, u, e[n + 7], 10, 1126891415),
  75. u = g(u, d, a, c, e[n + 14], 15, -1416354905),
  76. c = g(c, u, d, a, e[n + 5], 21, -57434055),
  77. a = g(a, c, u, d, e[n + 12], 6, 1700485571),
  78. d = g(d, a, c, u, e[n + 3], 10, -1894986606),
  79. u = g(u, d, a, c, e[n + 10], 15, -1051523),
  80. c = g(c, u, d, a, e[n + 1], 21, -2054922799),
  81. a = g(a, c, u, d, e[n + 8], 6, 1873313359),
  82. d = g(d, a, c, u, e[n + 15], 10, -30611744),
  83. u = g(u, d, a, c, e[n + 6], 15, -1560198380),
  84. c = g(c, u, d, a, e[n + 13], 21, 1309151649),
  85. a = g(a, c, u, d, e[n + 4], 6, -145523070),
  86. d = g(d, a, c, u, e[n + 11], 10, -1120210379),
  87. u = g(u, d, a, c, e[n + 2], 15, 718787259),
  88. c = g(c, u, d, a, e[n + 9], 21, -343485551),
  89. a = p(a, o),
  90. c = p(c, i),
  91. u = p(u, r),
  92. d = p(d, s);
  93. return [a, c, u, d]
  94. }
  95. function u(e) {
  96. var t, n = "";
  97. for (t = 0; t < 32 * e.length; t += 8) n += String.fromCharCode(e[t >> 5] >>> t % 32 & 255);
  98. return n
  99. }
  100. function d(e) {
  101. var t, n = [];
  102. for (n[(e.length >> 2) - 1] = void 0, t = 0; t < n.length; t += 1) n[t] = 0;
  103. for (t = 0; t < 8 * e.length; t += 8) n[t >> 5] |= (255 & e.charCodeAt(t / 8)) << t % 32;
  104. return n
  105. }
  106. function o(e) {
  107. var t, n, o = "0123456789abcdef",
  108. i = "";
  109. for (n = 0; n < e.length; n += 1) t = e.charCodeAt(n),
  110. i += o.charAt(t >>> 4 & 15) + o.charAt(15 & t);
  111. return i
  112. }
  113. function i(e) {
  114. return unescape(encodeURIComponent(e))
  115. }
  116. function r(e) {
  117. return u(c(d(t = i(e)), 8 * t.length));
  118. var t
  119. }
  120. function s(e, t) {
  121. return function(e, t) {
  122.     var n, o, i = d(e),
  123.     r = [],
  124.     s = [];
  125.     for (r[15] = s[15] = void 0, 16 < i.length && (i = c(i, 8 * e.length)), n = 0; n < 16; n += 1) r[n] = 909522486 ^ i[n],
  126.     s[n] = 1549556828 ^ i[n];
  127.     return o = c(r.concat(d(t)), 512 + 8 * t.length),
  128.     u(c(s.concat(o), 640))
  129. } (i(e), i(t))
  130. }
  131. function getpwd(e, t, n) {
  132. return t ? n ? s(t, e) : o(s(t, e)) : n ? r(e) : o(r(e))
  133. }
复制代码

5.调试加密算法

6.python执行

总结以上就是几种常见的前端加密算法的处理方式。




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-5-3 05:12 , Processed in 0.015463 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表