﻿/********************************************************************************
*
*              ★ SiteCeo智能建站平台 ★　（程序版本：v8.0）　
*
* 【版权所有】：CopyRight (C)
*
*　               温州瑞星科技 http://www.ruixing.cc 
*               ====================================
*
* 【全程开发】：  郑连涛（网上昵称：子秋、Folier   QQ:39886616）
*               E-mail:JspCeo@126.com
*
*    本程序仅供温州瑞星科技客户在指定的维护合同期内使用（合同期超过三年的不受此限制。）
*	 任何企业或个人未经温州瑞星科技书面授权，不得将此程序以任何目地进行第二次开发或发布以用于其它网站！！
*	 否则一经我公司发现，将追究其法律责任！
*	 
*	 如果此程序放在客户自己开设的服务器或虚拟主机上，或客户拥有本网站的FTP管理权限，
*	 并且由于以下原因导至网站运行不稳定或被黑客攻击的，本公司概不负责：
*	 
*	 1. 未经温州瑞星科技书面授权，将程序代码透露给第三方。
*	 2.　将任何有可能泄露本程序代码的密码（例如服务器的登录账户，FTP管理密码等）告知第三方。
*	 3. 未经温州瑞星科技授权，客户自行更改本程序源代码。
*	 4. 将本程序的后台管理账号或密码告知第三方。
*	 5. 由客户自己后台使用不当引起的数据丢失（例如不可恢复的删除操作，一般在这些操作之前系统都有确认提示）。
*	 6. 己知的服务器安全漏洞（如果服务器是客户自行维护或代理的）。
*
*
*                                               -- 温州瑞星科技　程序开发团队
*	 
********************************************************************************/

function ByteMD5(arr,Type){
   return binl2hex(coreMD5( arr2binl(arr)));
   function safe_add(x, y){
      var lsw = (x & 0xFFFF) + (y & 0xFFFF);
      var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
      return (msw << 16) | (lsw & 0xFFFF);
   }
   
   function rol(num, cnt){
      return (num << cnt) | (num >>> (32 - cnt));
   }
   
   function cmn(q, a, b, x, s, t){
      return safe_add(rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
   }
   
   function ff(a, b, c, d, x, s, t){
      return cmn((b & c) | ((~b) & d), a, b, x, s, t);
   }
   
   function gg(a, b, c, d, x, s, t){
      return cmn((b & d) | (c & (~d)), a, b, x, s, t);
   }
   
   function hh(a, b, c, d, x, s, t){
      return cmn(b ^ c ^ d, a, b, x, s, t);
   }
   
   function ii(a, b, c, d, x, s, t){
      return cmn(c ^ (b | (~d)), a, b, x, s, t)
   }
   
   function coreMD5(x){
      var a =  1732584193;
      var b = -271733879;
      var c = -1732584194;
      var d =  271733878;
      for(var i = 0; i < x.length; i += 16){
         var olda = a;
         var oldb = b;
         var oldc = c;
         var oldd = d;
         a = ff(a, b, c, d, x[i+ 0], 7 , -680876936);
         d = ff(d, a, b, c, x[i+ 1], 12, -389564586);
         c = ff(c, d, a, b, x[i+ 2], 17,  606105819);
         b = ff(b, c, d, a, x[i+ 3], 22, -1044525330);
         a = ff(a, b, c, d, x[i+ 4], 7 , -176418897);
         d = ff(d, a, b, c, x[i+ 5], 12,  1200080426);
         c = ff(c, d, a, b, x[i+ 6], 17, -1473231341);
         b = ff(b, c, d, a, x[i+ 7], 22, -45705983);
         a = ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
         d = ff(d, a, b, c, x[i+ 9], 12, -1958414417);
         c = ff(c, d, a, b, x[i+10], 17, -42063);
         b = ff(b, c, d, a, x[i+11], 22, -1990404162);
         a = ff(a, b, c, d, x[i+12], 7 ,  1804603682);
         d = ff(d, a, b, c, x[i+13], 12, -40341101);
         c = ff(c, d, a, b, x[i+14], 17, -1502002290);
         b = ff(b, c, d, a, x[i+15], 22,  1236535329);
         a = gg(a, b, c, d, x[i+ 1], 5 , -165796510);
         d = gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
         c = gg(c, d, a, b, x[i+11], 14,  643717713);
         b = gg(b, c, d, a, x[i+ 0], 20, -373897302);
         a = gg(a, b, c, d, x[i+ 5], 5 , -701558691);
         d = gg(d, a, b, c, x[i+10], 9 ,  38016083);
         c = gg(c, d, a, b, x[i+15], 14, -660478335);
         b = gg(b, c, d, a, x[i+ 4], 20, -405537848);
         a = gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
         d = gg(d, a, b, c, x[i+14], 9 , -1019803690);
         c = gg(c, d, a, b, x[i+ 3], 14, -187363961);
         b = gg(b, c, d, a, x[i+ 8], 20,  1163531501);
         a = gg(a, b, c, d, x[i+13], 5 , -1444681467);
         d = gg(d, a, b, c, x[i+ 2], 9 , -51403784);
         c = gg(c, d, a, b, x[i+ 7], 14,  1735328473);
         b = gg(b, c, d, a, x[i+12], 20, -1926607734);
         a = hh(a, b, c, d, x[i+ 5], 4 , -378558);
         d = hh(d, a, b, c, x[i+ 8], 11, -2022574463);
         c = hh(c, d, a, b, x[i+11], 16,  1839030562);
         b = hh(b, c, d, a, x[i+14], 23, -35309556);
         a = hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
         d = hh(d, a, b, c, x[i+ 4], 11,  1272893353);
         c = hh(c, d, a, b, x[i+ 7], 16, -155497632);
         b = hh(b, c, d, a, x[i+10], 23, -1094730640);
         a = hh(a, b, c, d, x[i+13], 4 ,  681279174);
         d = hh(d, a, b, c, x[i+ 0], 11, -358537222);
         c = hh(c, d, a, b, x[i+ 3], 16, -722521979);
         b = hh(b, c, d, a, x[i+ 6], 23,  76029189);
         a = hh(a, b, c, d, x[i+ 9], 4 , -640364487);
         d = hh(d, a, b, c, x[i+12], 11, -421815835);
         c = hh(c, d, a, b, x[i+15], 16,  530742520);
         b = hh(b, c, d, a, x[i+ 2], 23, -995338651);
         a = ii(a, b, c, d, x[i+ 0], 6 , -198630844);
         d = ii(d, a, b, c, x[i+ 7], 10,  1126891415);
         c = ii(c, d, a, b, x[i+14], 15, -1416354905);
         b = ii(b, c, d, a, x[i+ 5], 21, -57434055);
         a = ii(a, b, c, d, x[i+12], 6 ,  1700485571);
         d = ii(d, a, b, c, x[i+ 3], 10, -1894986606);
         c = ii(c, d, a, b, x[i+10], 15, -1051523);
         b = ii(b, c, d, a, x[i+ 1], 21, -2054922799);
         a = ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
         d = ii(d, a, b, c, x[i+15], 10, -30611744);
         c = ii(c, d, a, b, x[i+ 6], 15, -1560198380);
         b = ii(b, c, d, a, x[i+13], 21,  1309151649);
         a = ii(a, b, c, d, x[i+ 4], 6 , -145523070);
         d = ii(d, a, b, c, x[i+11], 10, -1120210379);
         c = ii(c, d, a, b, x[i+ 2], 15,  718787259);
         b = ii(b, c, d, a, x[i+ 9], 21, -343485551);
         a = safe_add(a, olda);
         b = safe_add(b, oldb);
         c = safe_add(c, oldc);
         d = safe_add(d, oldd);
      }
      
      if (Type == 32){
         return [a, b, c, d];
      }else{
         return [b, c]; 
         //Dicky modified this to fit 16byte database password @ 2005-9-2 11:21:15
      }
   }
   
   function binl2hex(binarray){
      var hex_tab = "0123456789abcdef";
      var str = "";
      for(var i = 0; i < binarray.length * 4; i++){
         str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
         hex_tab.charAt((binarray[i>>2] >> ((i%4)*8)) & 0xF);
      }
      return str
   }
   
   function arr2binl(arr){
      var nblk = ((arr.length + 8) >> 6) + 1 ;
      var blks = new Array(nblk * 16);
      for(var i = 0; i < nblk * 16; i++) blks[i] = 0;
         for(var i = 0; i < arr.length; i++)
            blks[i>>2] |= (arr[i] & 0xFF) << ((i%4) * 8);
      blks[i>>2] |= 0x80 << ((i%4) * 8);
      blks[nblk*16-2] = arr.length * 8;
      return blks;
   }
}

function String.prototype.MD5(Type){
   var len=this.length;
   var arr=new Array(len);
   for(var i=0;i<len;i++){
      var cc=this.charCodeAt(i);
      arr[i]=cc&0xFF;
   }
   return ByteMD5(arr,Type);   
}