//文件哈希工具 import win.ui; /*DSG{{*/ var winform = win.form(text="aardio Hasher - 文件哈希工具";right=479;bottom=300;acceptfiles=1;topmost=1) winform.add( progress={cls="progress";left=8;top=283;right=472;bottom=293;db=1;dl=1;dr=1;edge=1;font=LOGFONT(name='宋体');max=100;min=0;z=1}; richedit={cls="richedit";left=8;top=25;right=472;bottom=273;db=1;dl=1;dr=1;dt=1;edge=1;font=LOGFONT(name='宋体');multiline=1;readonly=1;vscroll=1;wrap=1;z=2}; static={cls="static";text="请从外部拖动文件到下面的文本框中:";left=13;top=5;right=336;bottom=21;dt=1;transparent=1;z=3} ) /*}}*/ import crypt; winform.onDropFiles = function(files){ for (k,path in files ) { var file,err = io.file(path, "rbR");//R 随机优化 if(!file) { winform.richedit.appendText( "打开文件失败:" , path , '\n',err , '\n' ); return; } winform.richedit.appendText( "正在计算哈希值:" , path , '\n'); var crc32; var md5 = crypt().createHashByMd5(); var sha1 = crypt().createHashBySha1(); var sha256 = crypt(,0x18/*_PROV_RSA_AES*/).createHashBySha256(); var bufsize = 0xA00000; winform.progress.setRange( 0,file.size()/bufsize ); winform.progress.pos = 0; while( var buffer,readSize = raw.buffer( bufsize ); readSize = file.readBuffer(buffer); //读文件 readSize ) { md5.hashBuffer(buffer,readSize); sha1.hashBuffer(buffer,readSize); sha256.hashBuffer(buffer,readSize); crc32 = string.crc32(buffer,crc32,readSize); win.peekPumpInputMessage(); winform.progress.stepIt(); } file.close(); winform.progress.stepIt(); winform.richedit.print('MD5:' , md5.getHexValue() ); winform.richedit.print('SHA1:', sha1.getHexValue() ); winform.richedit.print('SHA256:', sha256.getHexValue() ); winform.richedit.printf('CRC32:\t%X', crc32 ); winform.richedit.print(); md5.destroy(); sha1.destroy(); sha256.destroy(); } } winform.show(); win.loopMessage();