首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

版主求帮忙看下一个js加密的解决办法

2013-08-01 
版主求帮忙看下一个js加密的一个网站我想模拟post登陆,但是他账号+密码+验证码,然后一起加密了。每次密码都

版主求帮忙看下一个js加密的
一个网站我想模拟post登陆,但是他账号+密码+验证码,然后一起加密了。每次密码都不同,让我无法post,求帮忙把下面的js加密换成C#里面的加密。本人js不是很好。辛苦了。
下面是他js的文件代码




/* md5.js - MD5 Message-Digest
 * Copyright (C) 1999,2002 Masanao Izumo <iz@onicos.co.jp>
 * Version: 2.0.0
 * LastModified: May 13 2002
 *
 * This program is free software.  You can redistribute it and/or modify
 * it without any warranty.  This library calculates the MD5 based on RFC1321.
 * See RFC1321 for more information and algorism.
 */

/* Interface:
 * md5_128bits = MD5_hash(data);
 * md5_hexstr = MD5_hexhash(data);
 */

/* ChangeLog
 * 2002/05/13: Version 2.0.0 released
 * NOTICE: API is changed.
 * 2002/04/15: Bug fix about MD5 length.
 */


//    md5_T[i] = parseInt(Math.abs(Math.sin(i)) * 4294967296.0);
var MD5_T = new Array(0x00000000, 0xd76aa478, 0xe8c7b756, 0x242070db,
      0xc1bdceee, 0xf57c0faf, 0x4787c62a, 0xa8304613,
      0xfd469501, 0x698098d8, 0x8b44f7af, 0xffff5bb1,
      0x895cd7be, 0x6b901122, 0xfd987193, 0xa679438e,
      0x49b40821, 0xf61e2562, 0xc040b340, 0x265e5a51,
      0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681,
      0xe7d3fbc8, 0x21e1cde6, 0xc33707d6, 0xf4d50d87,
      0x455a14ed, 0xa9e3e905, 0xfcefa3f8, 0x676f02d9,
      0x8d2a4c8a, 0xfffa3942, 0x8771f681, 0x6d9d6122,
      0xfde5380c, 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60,
      0xbebfbc70, 0x289b7ec6, 0xeaa127fa, 0xd4ef3085,
      0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8,
      0xc4ac5665, 0xf4292244, 0x432aff97, 0xab9423a7,
      0xfc93a039, 0x655b59c3, 0x8f0ccc92, 0xffeff47d,
      0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314,
      0x4e0811a1, 0xf7537e82, 0xbd3af235, 0x2ad7d2bb,


      0xeb86d391);

var MD5_round1 = new Array(new Array( 0, 7, 1), new Array( 1,12, 2),
   new Array( 2,17, 3), new Array( 3,22, 4),
   new Array( 4, 7, 5), new Array( 5,12, 6),
   new Array( 6,17, 7), new Array( 7,22, 8),
   new Array( 8, 7, 9), new Array( 9,12,10),
   new Array(10,17,11), new Array(11,22,12),
   new Array(12, 7,13), new Array(13,12,14),
   new Array(14,17,15), new Array(15,22,16));

var MD5_round2 = new Array(new Array( 1, 5,17), new Array( 6, 9,18),
   new Array(11,14,19), new Array( 0,20,20),
   new Array( 5, 5,21), new Array(10, 9,22),
   new Array(15,14,23), new Array( 4,20,24),
   new Array( 9, 5,25), new Array(14, 9,26),
   new Array( 3,14,27), new Array( 8,20,28),
   new Array(13, 5,29), new Array( 2, 9,30),
   new Array( 7,14,31), new Array(12,20,32));

var MD5_round3 = new Array(new Array( 5, 4,33), new Array( 8,11,34),
   new Array(11,16,35), new Array(14,23,36),
   new Array( 1, 4,37), new Array( 4,11,38),
   new Array( 7,16,39), new Array(10,23,40),
   new Array(13, 4,41), new Array( 0,11,42),
   new Array( 3,16,43), new Array( 6,23,44),
   new Array( 9, 4,45), new Array(12,11,46),
   new Array(15,16,47), new Array( 2,23,48));

var MD5_round4 = new Array(new Array( 0, 6,49), new Array( 7,10,50),
   new Array(14,15,51), new Array( 5,21,52),
   new Array(12, 6,53), new Array( 3,10,54),
   new Array(10,15,55), new Array( 1,21,56),
   new Array( 8, 6,57), new Array(15,10,58),
   new Array( 6,15,59), new Array(13,21,60),
   new Array( 4, 6,61), new Array(11,10,62),


   new Array( 2,15,63), new Array( 9,21,64));

function MD5_F(x, y, z) { return (x & y) | (~x & z); }
function MD5_G(x, y, z) { return (x & z) | (y & ~z); }
function MD5_H(x, y, z) { return x ^ y ^ z;          }
function MD5_I(x, y, z) { return y ^ (x | ~z);       }

var MD5_round = new Array(new Array(MD5_F, MD5_round1),
  new Array(MD5_G, MD5_round2),
  new Array(MD5_H, MD5_round3),
  new Array(MD5_I, MD5_round4));

function MD5_pack(n32) {
  return String.fromCharCode(n32 & 0xff) +
 String.fromCharCode((n32 >>> 8) & 0xff) +
 String.fromCharCode((n32 >>> 16) & 0xff) +
 String.fromCharCode((n32 >>> 24) & 0xff);
}

function MD5_unpack(s4) {
  return  s4.charCodeAt(0)        |
 (s4.charCodeAt(1) <<  8) |
 (s4.charCodeAt(2) << 16) |
 (s4.charCodeAt(3) << 24);
}

function MD5_number(n) {
  while (n < 0)
    n += 4294967296;
  while (n > 4294967295)
    n -= 4294967296;
  return n;
}

function MD5_apply_round(x, s, f, abcd, r) {
  var a, b, c, d;
  var kk, ss, ii;
  var t, u;

  a = abcd[0];
  b = abcd[1];
  c = abcd[2];
  d = abcd[3];
  kk = r[0];
  ss = r[1];
  ii = r[2];

  u = f(s[b], s[c], s[d]);
  t = s[a] + u + x[kk] + MD5_T[ii];
  t = MD5_number(t);
  t = ((t<<ss) | (t>>>(32-ss)));
  t += s[b];
  s[a] = MD5_number(t);
}

function MD5_hash(data) {
  var abcd, x, state, s;
  var len, index, padLen, f, r;


  var i, j, k;
  var tmp;

  state = new Array(0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476);
  len = data.length;
  index = len & 0x3f;
  padLen = (index < 56) ? (56 - index) : (120 - index);
  if(padLen > 0) {
    data += "\x80";
    for(i = 0; i < padLen - 1; i++)
      data += "\x00";
  }
  data += MD5_pack(len * 8);
  data += MD5_pack(0);
  len  += padLen + 8;
  abcd = new Array(0, 1, 2, 3);
  x    = new Array(16);
  s    = new Array(4);

  for(k = 0; k < len; k += 64) {
    for(i = 0, j = k; i < 16; i++, j += 4) {
      x[i] = data.charCodeAt(j) |
    (data.charCodeAt(j + 1) <<  8) |
    (data.charCodeAt(j + 2) << 16) |
    (data.charCodeAt(j + 3) << 24);
    }
    for(i = 0; i < 4; i++)
      s[i] = state[i];
    for(i = 0; i < 4; i++) {
      f = MD5_round[i][0];
      r = MD5_round[i][1];
      for(j = 0; j < 16; j++) {
MD5_apply_round(x, s, f, abcd, r[j]);
tmp = abcd[0];
abcd[0] = abcd[3];
abcd[3] = abcd[2];
abcd[2] = abcd[1];
abcd[1] = tmp;
      }
    }

    for(i = 0; i < 4; i++) {
      state[i] += s[i];
      state[i] = MD5_number(state[i]);
    }
  }

  return MD5_pack(state[0]) +
 MD5_pack(state[1]) +
 MD5_pack(state[2]) +
 MD5_pack(state[3]);


}

function MD5_hexhash(data) {
    var i, out, c;
    var bit128;

    bit128 = MD5_hash(data);
    out = "";
    for(i = 0; i < 16; i++) {
c = bit128.charCodeAt(i);
out += "0123456789abcdef".charAt((c>>4) & 0xf);
out += "0123456789abcdef".charAt(c & 0xf);
    }
    return out;
}



他调用的代码是

function pwdmd5()
{
var pwd=document.getElementById("passwords");
var checkcode=document.getElementById("checkcode");
var username=document.getElementById("name");
 
var mm=MD5_hexhash(username.value+pwd.value);
mm=MD5_hexhash(mm+checkcode.value);

var keystr="";

for(i=0;i<8;i++)
{
keystr+=MD5_hexhash(mm.substr(i*4,8));
}
pwd.value=MD5_hexhash(keystr);
return true;

}



[解决办法]
你可以用你的程序动态写出一个web网页,例如部署在自己电脑的文件 c:\test\abc.html,然后你的程序就动态地调用浏览器来执行它。你能调用它,例如点击其中一个“提交”按钮,然后捕获提交之后浏览器所下载完毕的任何页面。

热点排行
Bad Request.