[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 21# 娃娃


    又弄了个jscript的 ,保存为ansi编码的bat ,计算当前目录下所有文件的ed2k (不包括子目录)
(注意:速度非常非常非常非常慢 ,我这里200k的文件hash要5秒 ,1.6m的文件hash差不多2分钟 ,12m左右的文件hash要10几分钟 ,再往上大概就是每多1m就多1分钟了;而且挺耗内存的 ,占用几百m ,文件越大占用越多)
  1. @set @do_not_save_as_utf8=1;/*&echo off
  2. set _self=%%~nx0
  3. for %%a in (*) do (
  4. set "_name=%%~nxa"
  5. set "_size=%%~za"
  6. if "%%~nxa" neq "%_self%" (
  7. for /f "delims=" %%b in ('cscript //nologo //e:jscript "%~f0" "%%a"') do set _md4=%%b
  8. setlocal enabledelayedexpansion
  9. if "!_size!" neq "0" (
  10. set _name=!_name:%%=%%25!
  11. set _name=!_name: =%%20!
  12. set _md4=!_md4: =!
  13. echo ed2k://^|file^|!_name!^|!_size!^|!_md4!^|/
  14. echo,&endlocal
  15. )))
  16. echo done&pause&exit /b 0 */
  17. //jscript part
  18. var md4_block=9500*1024;
  19. var ado=GetObject('new:adodb.stream');
  20. var vt=GetObject('new:wia.vector');
  21. ado.Type=1;ado.Open();ado.LoadFromFile(WScript.arguments(0));
  22. if(0==ado.Size){ado.Close();ado=null;vt=null;WScript.Quit();}
  23. var size,b,c,mask = (1<<8)-1;
  24. var str='';
  25. var tb={};for(var i=0;i<=0xff;i++)tb[i>=0x10?i.toString(16):'0'+i.toString(16)]=i;
  26. while(!ado.EOS){
  27. var d=ado.Read(md4_block);
  28. vt.BinaryData=d;size=vt.Count*8;b=new Array();
  29. for(var i=0;i<size;i+=8){b[i>>5] |= (vt(i/8+1)&mask)<<(i%32);}
  30. if(md4_block>ado.Size){
  31. WScript.Echo(binl2hex(core_md4(b,size)).toUpperCase());
  32. break;
  33. }else{
  34. str+=binl2hex(core_md4(b,size));d=null;
  35. }}
  36. if(str.length){//if(0==(parseInt(WScript.arguments(1))%md4_block))
  37. if(0==(ado.Size%md4_block))str+='31d6cfe0d16ae931b73c59d7e0c089c0';
  38. //[49,214,207,224,209,106,233,49,183,60,89,215,224,192,137,192]
  39. b=new Array();c=new Array();size=str.length/2;
  40. for(var i=0;i<size;i++)c[i]=tb[str.substr(i*2,2)];
  41. for(var i=0;i<size*8;i+=8){b[i>>5] |= (c[i/8]&mask)<<(i%32);}
  42. WScript.Echo(binl2hex(core_md4(b,size*8)).toUpperCase());
  43. }
  44. d=null;ado.Close();ado=null;vt=null;WScript.Quit();
  45. /**
  46. * Created by hp-ENVY on 16-7-5.
  47. */
  48. /*
  49. * A JavaScript implementation of the RSA Data Security, Inc. MD4 Message
  50. * Digest Algorithm, as defined in RFC 1320.
  51. * Version 2.1 Copyright (C) Jerrad Pierce, Paul Johnston 1999 - 2002.
  52. * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
  53. * Distributed under the BSD License
  54. * See http://pajhome.org.uk/crypt/md5 for more info.
  55. */
  56. var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase    */
  57. var chrsz  = 8; /* bits per input character. 8 - ASCII; 16 - Unicode   */
  58. /*
  59. * Calculate the MD4 of an array of little-endian words, and a bit length
  60. */
  61. function core_md4(x, len){
  62. /* append padding */
  63. x[len >> 5] |= 0x80 << (len % 32);
  64. x[(((len + 64) >>> 9) << 4) + 14] = len;
  65. var a = 1732584193;
  66. var b = -271733879;
  67. var c = -1732584194;
  68. var d = 271733878;
  69. for(var i = 0; i < x.length; i += 16){
  70. var olda = a;
  71. var oldb = b;
  72. var oldc = c;
  73. var oldd = d;
  74. a = md4_ff(a, b, c, d, x[i+ 0], 3 );
  75. d = md4_ff(d, a, b, c, x[i+ 1], 7 );
  76. c = md4_ff(c, d, a, b, x[i+ 2], 11);
  77. b = md4_ff(b, c, d, a, x[i+ 3], 19);
  78. a = md4_ff(a, b, c, d, x[i+ 4], 3 );
  79. d = md4_ff(d, a, b, c, x[i+ 5], 7 );
  80. c = md4_ff(c, d, a, b, x[i+ 6], 11);
  81. b = md4_ff(b, c, d, a, x[i+ 7], 19);
  82. a = md4_ff(a, b, c, d, x[i+ 8], 3 );
  83. d = md4_ff(d, a, b, c, x[i+ 9], 7 );
  84. c = md4_ff(c, d, a, b, x[i+10], 11);
  85. b = md4_ff(b, c, d, a, x[i+11], 19);
  86. a = md4_ff(a, b, c, d, x[i+12], 3 );
  87. d = md4_ff(d, a, b, c, x[i+13], 7 );
  88. c = md4_ff(c, d, a, b, x[i+14], 11);
  89. b = md4_ff(b, c, d, a, x[i+15], 19);
  90. a = md4_gg(a, b, c, d, x[i+ 0], 3 );
  91. d = md4_gg(d, a, b, c, x[i+ 4], 5 );
  92. c = md4_gg(c, d, a, b, x[i+ 8], 9 );
  93. b = md4_gg(b, c, d, a, x[i+12], 13);
  94. a = md4_gg(a, b, c, d, x[i+ 1], 3 );
  95. d = md4_gg(d, a, b, c, x[i+ 5], 5 );
  96. c = md4_gg(c, d, a, b, x[i+ 9], 9 );
  97. b = md4_gg(b, c, d, a, x[i+13], 13);
  98. a = md4_gg(a, b, c, d, x[i+ 2], 3 );
  99. d = md4_gg(d, a, b, c, x[i+ 6], 5 );
  100. c = md4_gg(c, d, a, b, x[i+10], 9 );
  101. b = md4_gg(b, c, d, a, x[i+14], 13);
  102. a = md4_gg(a, b, c, d, x[i+ 3], 3 );
  103. d = md4_gg(d, a, b, c, x[i+ 7], 5 );
  104. c = md4_gg(c, d, a, b, x[i+11], 9 );
  105. b = md4_gg(b, c, d, a, x[i+15], 13);
  106. a = md4_hh(a, b, c, d, x[i+ 0], 3 );
  107. d = md4_hh(d, a, b, c, x[i+ 8], 9 );
  108. c = md4_hh(c, d, a, b, x[i+ 4], 11);
  109. b = md4_hh(b, c, d, a, x[i+12], 15);
  110. a = md4_hh(a, b, c, d, x[i+ 2], 3 );
  111. d = md4_hh(d, a, b, c, x[i+10], 9 );
  112. c = md4_hh(c, d, a, b, x[i+ 6], 11);
  113. b = md4_hh(b, c, d, a, x[i+14], 15);
  114. a = md4_hh(a, b, c, d, x[i+ 1], 3 );
  115. d = md4_hh(d, a, b, c, x[i+ 9], 9 );
  116. c = md4_hh(c, d, a, b, x[i+ 5], 11);
  117. b = md4_hh(b, c, d, a, x[i+13], 15);
  118. a = md4_hh(a, b, c, d, x[i+ 3], 3 );
  119. d = md4_hh(d, a, b, c, x[i+11], 9 );
  120. c = md4_hh(c, d, a, b, x[i+ 7], 11);
  121. b = md4_hh(b, c, d, a, x[i+15], 15);
  122. a = safe_add(a, olda);
  123. b = safe_add(b, oldb);
  124. c = safe_add(c, oldc);
  125. d = safe_add(d, oldd);
  126. }
  127. return Array(a, b, c, d);
  128. }
  129. function md4_cmn(q, a, b, x, s, t){return safe_add(rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);}
  130. function md4_ff(a, b, c, d, x, s){return md4_cmn((b & c) | ((~b) & d), a, 0, x, s, 0);}
  131. function md4_gg(a, b, c, d, x, s){return md4_cmn((b & c) | (b & d) | (c & d), a, 0, x, s, 1518500249);}
  132. function md4_hh(a, b, c, d, x, s){return md4_cmn(b ^ c ^ d, a, 0, x, s, 1859775393);}
  133. function rol(num, cnt){return (num << cnt) | (num >>> (32 - cnt));}
  134. function safe_add(x, y){
  135. var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  136. var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  137. return (msw << 16) | (lsw & 0xFFFF);
  138. }
  139. /*
  140. * Convert an array of little-endian words to a hex string.
  141. */
  142. function binl2hex(binarray){
  143. var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  144. var str = "";
  145. for(var i = 0; i < binarray.length * 4; i++){
  146. str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
  147. hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
  148. }
  149. return str;
  150. }
复制代码

TOP

返回列表