aardio 文档
aardio 范例: aardio Hasher - 文件哈希工具
//文件哈希工具
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();
Markdown 格式