| 
									
										
										
										
											1998-12-21 18:52:47 +08:00
										 |  |  | #!/usr/local/bin/perl | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # This file takes as input, the files that have been output from | 
					
						
							|  |  |  | # ssleay speed. | 
					
						
							|  |  |  | # It prints a table of the relative differences with %100 being 'no difference' | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ($#ARGV == 1) || die "$0 speedout1 speedout2\n"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | %one=&loadfile($ARGV[0]); | 
					
						
							|  |  |  | %two=&loadfile($ARGV[1]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $line=0; | 
					
						
							| 
									
										
										
										
											2000-08-14 22:05:53 +08:00
										 |  |  | foreach $a ("md2","md4","md5","sha","sha1","rc4","des cfb","des cbc","des ede3", | 
					
						
							| 
									
										
										
										
											1998-12-21 18:56:39 +08:00
										 |  |  | 	"idea cfb","idea cbc","rc2 cfb","rc2 cbc","blowfish cbc","cast cbc") | 
					
						
							| 
									
										
										
										
											1998-12-21 18:52:47 +08:00
										 |  |  | 	{ | 
					
						
							|  |  |  | 	if (defined($one{$a,8}) && defined($two{$a,8})) | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 		print "type              8 byte%    64 byte%   256 byte%  1024 byte%  8192 byte%\n" | 
					
						
							|  |  |  | 			unless $line; | 
					
						
							|  |  |  | 		$line++; | 
					
						
							|  |  |  | 		printf "%-12s ",$a; | 
					
						
							|  |  |  | 		foreach $b (8,64,256,1024,8192) | 
					
						
							|  |  |  | 			{ | 
					
						
							|  |  |  | 			$r=$two{$a,$b}/$one{$a,$b}*100; | 
					
						
							|  |  |  | 			printf "%12.2f",$r; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		print "\n"; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | foreach $a	( | 
					
						
							|  |  |  | 		"rsa  512","rsa 1024","rsa 2048","rsa 4096", | 
					
						
							|  |  |  | 		"dsa  512","dsa 1024","dsa 2048", | 
					
						
							|  |  |  | 		) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 	if (defined($one{$a,1}) && defined($two{$a,1})) | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 		$r1=($one{$a,1}/$two{$a,1})*100; | 
					
						
							|  |  |  | 		$r2=($one{$a,2}/$two{$a,2})*100; | 
					
						
							|  |  |  | 		printf "$a bits %%    %6.2f %%    %6.2f\n",$r1,$r2; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | sub loadfile | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 	local($file)=@_; | 
					
						
							|  |  |  | 	local($_,%ret); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	open(IN,"<$file") || die "unable to open '$file' for input\n"; | 
					
						
							|  |  |  | 	$header=1; | 
					
						
							|  |  |  | 	while (<IN>) | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 		$header=0 if /^[dr]sa/; | 
					
						
							|  |  |  | 		if (/^type/) { $header=0; next; } | 
					
						
							|  |  |  | 		next if $header; | 
					
						
							|  |  |  | 		chop; | 
					
						
							|  |  |  | 		@a=split; | 
					
						
							|  |  |  | 		if ($a[0] =~ /^[dr]sa$/) | 
					
						
							|  |  |  | 			{ | 
					
						
							|  |  |  | 			($n,$t1,$t2)=($_ =~ /^([dr]sa\s+\d+)\s+bits\s+([.\d]+)s\s+([.\d]+)/); | 
					
						
							|  |  |  | 			$ret{$n,1}=$t1; | 
					
						
							|  |  |  | 			$ret{$n,2}=$t2; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		else | 
					
						
							|  |  |  | 			{ | 
					
						
							|  |  |  | 			$n=join(' ',grep(/[^k]$/,@a)); | 
					
						
							|  |  |  | 			@k=grep(s/k$//,@a); | 
					
						
							|  |  |  | 			 | 
					
						
							|  |  |  | 			$ret{$n,   8}=$k[0]; | 
					
						
							|  |  |  | 			$ret{$n,  64}=$k[1]; | 
					
						
							|  |  |  | 			$ret{$n, 256}=$k[2]; | 
					
						
							|  |  |  | 			$ret{$n,1024}=$k[3]; | 
					
						
							|  |  |  | 			$ret{$n,8192}=$k[4]; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	close(IN); | 
					
						
							|  |  |  | 	return(%ret); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 |