From 7a939b417d8289e3b5e5a253d9a70cc1bdb3876c Mon Sep 17 00:00:00 2001 From: ValKmjolnir Date: Tue, 29 Mar 2022 22:36:28 +0800 Subject: [PATCH] fix bug in test/md5.nas & add test file md5compare.nas --- makefile | 2 + test/calc.nas | 5 ++- test/md5.nas | 92 ++++++++++++++++++++++----------------------- test/md5compare.nas | 16 ++++++++ 4 files changed, 68 insertions(+), 47 deletions(-) create mode 100644 test/md5compare.nas diff --git a/makefile b/makefile index 451d2f2..df84a94 100644 --- a/makefile +++ b/makefile @@ -25,6 +25,8 @@ test:nasal @ ./nasal -op -t test/loop.nas @ ./nasal -op -t -d test/mandel.nas @ ./nasal -op -t -d test/mandelbrot.nas + @ ./nasal -op -t -d -o test/md5.nas + -@ ./nasal -op -t -d -o test/md5compare.nas -@ ./nasal -op -d test/module_test.nas @ ./nasal -op -e test/nasal_test.nas @ ./nasal -op -t -d test/pi.nas diff --git a/test/calc.nas b/test/calc.nas index e219d89..1d83233 100644 --- a/test/calc.nas +++ b/test/calc.nas @@ -50,6 +50,7 @@ var testfile=[ "test/mandel.nas ", "test/mandelbrot.nas ", "test/md5.nas ", + "test/md5compare.nas ", "test/module_test.nas ", "test/nasal_test.nas ", "test/pi.nas ", @@ -69,8 +70,10 @@ var testfile=[ var module=[ "module/fib.cpp ", "module/keyboard.cpp ", + "module/md5.cpp ", "module/libfib.nas ", - "module/libkey.nas " + "module/libkey.nas ", + "module/libmd5.nas " ]; var getname=func(s){ diff --git a/test/md5.nas b/test/md5.nas index f533b24..d43d38f 100644 --- a/test/md5.nas +++ b/test/md5.nas @@ -4,7 +4,7 @@ import("lib.nas"); var check=func(x){ return x-int(x/0x100000000)*0x100000000; } -var bits_and=func(x,y){ +var u32_bits_and=func(x,y){ x=check(x); y=check(y); var (res,op)=(0,1); @@ -17,7 +17,7 @@ var bits_and=func(x,y){ } return res; } -var bits_or=func(x,y){ +var u32_bits_or=func(x,y){ x=check(x); y=check(y); var (res,op)=(0,1); @@ -30,7 +30,7 @@ var bits_or=func(x,y){ } return res; } -var bits_xor=func(x,y){ +var u32_bits_xor=func(x,y){ x=check(x); y=check(y); var (res,op)=(0,1); @@ -43,7 +43,7 @@ var bits_xor=func(x,y){ } return res; } -var bits_not=func(x){ +var u32_bits_not=func(x){ x=check(x); var (res,op)=(0,1); for(var i=0;i<32;i+=1){ @@ -60,14 +60,15 @@ var hex32str=func(num){ for(var i=0;i<4;i+=1){ var tmp=""; for(var j=0;j<2;j+=1){ - tmp=chr(ch[bits_and(num,0x0f)])~tmp; + tmp=chr(ch[u32_bits_and(num,0x0f)])~tmp; num=int(num/16); } res~=tmp; } return res; } -var md5=func(s){ + +var _md5=func(s){ var K=[ 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501, @@ -107,31 +108,31 @@ var md5=func(s){ return int(num); } var rol=func(num,cx){ - return bits_or(l(num,cx),r(num,32-cx)); + return u32_bits_or(l(num,cx),r(num,32-cx)); } # round 1 var F=func(x,y,z){ - return bits_or( - bits_and(x,y), - bits_and(bits_not(x),z) + return u32_bits_or( + u32_bits_and(x,y), + u32_bits_and(u32_bits_not(x),z) ); } # round 2 var G=func(x,y,z){ - return bits_or( - bits_and(x,z), - bits_and(y,bits_not(z)) + return u32_bits_or( + u32_bits_and(x,z), + u32_bits_and(y,u32_bits_not(z)) ); } # round 3 var H=func(x,y,z){ - return bits_xor(bits_xor(x,y),z); + return u32_bits_xor(u32_bits_xor(x,y),z); } # round 4 var I=func(x,y,z){ - return bits_xor( + return u32_bits_xor( y, - bits_or(x,bits_not(z)) + u32_bits_or(x,u32_bits_not(z)) ); } @@ -166,10 +167,8 @@ var md5=func(s){ } var (tmp,cnt,t)=([],0,0); foreach(var i;res){ - if(!cnt) - t=i; - else - t=t*2+i; + if(!cnt) t=i; + else t=t*2+i; cnt+=1; if(cnt==8){ cnt=0; @@ -210,55 +209,56 @@ var md5=func(s){ for(var i=0;i!@#$%^&*()-=\\|[]{}"; + +for(var i=1;i<1024;i+=1){ + var s=""; + for(var j=0;j