⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shifts.pl

📁 一个DES、3DES加解密的库文件
💻 PL
字号:
sub lab_shift	{	local(*a,$n)=@_;	local(@r,$i,$j,$k,$d,@z);	@r=&shift(*a,$n);	foreach $i (0 .. 31)		{		@z=split(/\^/,$r[$i]);		for ($j=0; $j <= $#z; $j++)			{			($d)=($z[$j] =~ /^(..)/);			($k)=($z[$j] =~ /\[(.*)\]$/);			$k.=",$n" if ($k ne "");			$k="$n"	  if ($k eq "");			$d="$d[$k]";			$z[$j]=$d;			}		$r[$i]=join('^',@z);		}	return(@r);	}sub shift	{	local(*a,$n)=@_;	local(@f);	if ($n > 0)		{		@f=&shiftl(*a,$n);		}	else		{		@f=&shiftr(*a,-$n);		}	return(@f);	}sub shiftr	{	local(*a,$n)=@_;	local(@r,$i);	$#r=31;	foreach $i (0 .. 31)		{		if (($i+$n) > 31)			{			$r[$i]="--";			}		else			{			$r[$i]=$a[$i+$n];			}		}	return(@r);	}sub shiftl	{	local(*a,$n)=@_;	local(@r,$i);	$#r=31;	foreach $i (0 .. 31)		{		if ($i < $n)			{			$r[$i]="--";			}		else			{			$r[$i]=$a[$i-$n];			}		}	return(@r);	}sub printit	{	local(@a)=@_;	local($i);	foreach $i (0 .. 31)		{		printf "%2s  ",$a[$i];		print "\n" if (($i%8) == 7);		}	print "\n";	}sub xor	{	local(*a,*b)=@_;	local(@r,$i);	$#r=31;	foreach $i (0 .. 31)		{		$r[$i]=&compress($a[$i].'^'.$b[$i]);#		$r[$i]=$a[$i]."^".$b[$i];		}	return(@r);	}sub and	{	local(*a,$m)=@_;	local(@r,$i);	$#r=31;	foreach $i (0 .. 31)		{		$r[$i]=(($m & (1<<$i))?($a[$i]):('--'));		}	return(@r);	}sub or	{	local(*a,*b)=@_;	local(@r,$i);	$#r=31;	foreach $i (0 .. 31)		{		$r[$i]='--'   if (($a[$i] eq '--') && ($b[$i] eq '--'));		$r[$i]=$a[$i] if (($a[$i] ne '--') && ($b[$i] eq '--'));		$r[$i]=$b[$i] if (($a[$i] eq '--') && ($b[$i] ne '--'));		$r[$i]='++'   if (($a[$i] ne '--') && ($b[$i] ne '--'));		}	return(@r);	}sub compress	{	local($s)=@_;	local($_,$i,@a,%a,$r);	$s =~ s/\^\^/\^/g;	$s =~ s/^\^//;	$s =~ s/\^$//;	@a=split(/\^/,$s);	while ($#a >= 0)		{		$_=shift(@a);		next unless /\d/;		$a{$_}++;		}	foreach $i (sort keys %a)		{		next if ($a{$i}%2 == 0);		$r.="$i^";		}	chop($r);	return($r);	}1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -