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

📄 des.pl

📁 一个DES、3DES加解密的库文件
💻 PL
📖 第 1 页 / 共 2 页
字号:
0x00002000, 0x00000004, 0x01000004, 0x01000080,0x01000000, 0x00002080, 0x01002084, 0x00000000,0x00002084, 0x01000000, 0x00000080, 0x00002004,0x01000084, 0x00000080, 0x00000000, 0x01002084,0x01002004, 0x01002080, 0x00000084, 0x00002000,0x00002080, 0x01002004, 0x01000080, 0x00000084,0x00000004, 0x00002084, 0x01002000, 0x01000004,);@SP5=(0x10000008, 0x00040008, 0x00000000, 0x10040400,0x00040008, 0x00000400, 0x10000408, 0x00040000,0x00000408, 0x10040408, 0x00040400, 0x10000000,0x10000400, 0x10000008, 0x10040000, 0x00040408,0x00040000, 0x10000408, 0x10040008, 0x00000000,0x00000400, 0x00000008, 0x10040400, 0x10040008,0x10040408, 0x10040000, 0x10000000, 0x00000408,0x00000008, 0x00040400, 0x00040408, 0x10000400,0x00000408, 0x10000000, 0x10000400, 0x00040408,0x10040400, 0x00040008, 0x00000000, 0x10000400,0x10000000, 0x00000400, 0x10040008, 0x00040000,0x00040008, 0x10040408, 0x00040400, 0x00000008,0x10040408, 0x00040400, 0x00040000, 0x10000408,0x10000008, 0x10040000, 0x00040408, 0x00000000,0x00000400, 0x10000008, 0x10000408, 0x10040400,0x10040000, 0x00000408, 0x00000008, 0x10040008,);@SP6=(0x00000800, 0x00000040, 0x00200040, 0x80200000,0x80200840, 0x80000800, 0x00000840, 0x00000000,0x00200000, 0x80200040, 0x80000040, 0x00200800,0x80000000, 0x00200840, 0x00200800, 0x80000040,0x80200040, 0x00000800, 0x80000800, 0x80200840,0x00000000, 0x00200040, 0x80200000, 0x00000840,0x80200800, 0x80000840, 0x00200840, 0x80000000,0x80000840, 0x80200800, 0x00000040, 0x00200000,0x80000840, 0x00200800, 0x80200800, 0x80000040,0x00000800, 0x00000040, 0x00200000, 0x80200800,0x80200040, 0x80000840, 0x00000840, 0x00000000,0x00000040, 0x80200000, 0x80000000, 0x00200040,0x00000000, 0x80200040, 0x00200040, 0x00000840,0x80000040, 0x00000800, 0x80200840, 0x00200000,0x00200840, 0x80000000, 0x80000800, 0x80200840,0x80200000, 0x00200840, 0x00200800, 0x80000800,);@SP7=(0x04100010, 0x04104000, 0x00004010, 0x00000000,0x04004000, 0x00100010, 0x04100000, 0x04104010,0x00000010, 0x04000000, 0x00104000, 0x00004010,0x00104010, 0x04004010, 0x04000010, 0x04100000,0x00004000, 0x00104010, 0x00100010, 0x04004000,0x04104010, 0x04000010, 0x00000000, 0x00104000,0x04000000, 0x00100000, 0x04004010, 0x04100010,0x00100000, 0x00004000, 0x04104000, 0x00000010,0x00100000, 0x00004000, 0x04000010, 0x04104010,0x00004010, 0x04000000, 0x00000000, 0x00104000,0x04100010, 0x04004010, 0x04004000, 0x00100010,0x04104000, 0x00000010, 0x00100010, 0x04004000,0x04104010, 0x00100000, 0x04100000, 0x04000010,0x00104000, 0x00004010, 0x04004010, 0x04100000,0x00000010, 0x04104000, 0x00104010, 0x00000000,0x04000000, 0x04100010, 0x00004000, 0x00104010,);sub main'des_set_key	{	local($param)=@_;	local(@key);	local($c,$d,$i,$s,$t);	local(@ks)=();	# Get the bytes in the order we want.	@key=unpack("C8",$param);	$c=	($key[0]    )|		($key[1]<< 8)|		($key[2]<<16)|		($key[3]<<24);	$d=	($key[4]    )|		($key[5]<< 8)|		($key[6]<<16)|		($key[7]<<24);	&doPC1(*c,*d);	for $i (@shifts2)		{		if ($i)			{			$c=($c>>2)|($c<<26);			$d=($d>>2)|($d<<26);			}		else			{			$c=($c>>1)|($c<<27);			$d=($d>>1)|($d<<27);			}		$c&=0x0fffffff;		$d&=0x0fffffff;		$s=	$skb0[ ($c    )&0x3f                 ]|			$skb1[(($c>> 6)&0x03)|(($c>> 7)&0x3c)]|			$skb2[(($c>>13)&0x0f)|(($c>>14)&0x30)]|			$skb3[(($c>>20)&0x01)|(($c>>21)&0x06) |					     (($c>>22)&0x38)];		$t=     $skb4[ ($d    )&0x3f                ]|			$skb5[(($d>> 7)&0x03)|(($d>> 8)&0x3c)]|			$skb6[ ($d>>15)&0x3f                 ]|			$skb7[(($d>>21)&0x0f)|(($d>>22)&0x30)];		push(@ks,(($t<<16)|($s&0x0000ffff))&0xffffffff);		$s=      ($s>>16)|($t&0xffff0000) ;		push(@ks,(($s<<4)|($s>>28))&0xffffffff);		}	@ks;	}sub doPC1	{	local(*a,*b)=@_;	local($t);	$t=(($b>>4)^$a)&0x0f0f0f0f;	$b^=($t<<4); $a^=$t;	# do $a first 	$t=(($a<<18)^$a)&0xcccc0000;	$a=$a^$t^($t>>18);	$t=(($a<<17)^$a)&0xaaaa0000;	$a=$a^$t^($t>>17);	$t=(($a<< 8)^$a)&0x00ff0000;	$a=$a^$t^($t>> 8);	$t=(($a<<17)^$a)&0xaaaa0000;	$a=$a^$t^($t>>17);	# now do $b	$t=(($b<<24)^$b)&0xff000000;	$b=$b^$t^($t>>24);	$t=(($b<< 8)^$b)&0x00ff0000;	$b=$b^$t^($t>> 8);	$t=(($b<<14)^$b)&0x33330000;	$b=$b^$t^($t>>14);	$b=(($b&0x00aa00aa)<<7)|(($b&0x55005500)>>7)|($b&0xaa55aa55);	$b=($b>>8)|(($a&0xf0000000)>>4);	$a&=0x0fffffff;	}sub doIP	{	local(*a,*b)=@_;	local($t);	$t=(($b>> 4)^$a)&0x0f0f0f0f;	$b^=($t<< 4); $a^=$t;	$t=(($a>>16)^$b)&0x0000ffff;	$a^=($t<<16); $b^=$t;	$t=(($b>> 2)^$a)&0x33333333;	$b^=($t<< 2); $a^=$t;	$t=(($a>> 8)^$b)&0x00ff00ff;	$a^=($t<< 8); $b^=$t;	$t=(($b>> 1)^$a)&0x55555555;	$b^=($t<< 1); $a^=$t;	$t=$a;	$a=$b&0xffffffff;	$b=$t&0xffffffff;	}sub doFP	{	local(*a,*b)=@_;	local($t);	$t=(($b>> 1)^$a)&0x55555555;	$b^=($t<< 1); $a^=$t;	$t=(($a>> 8)^$b)&0x00ff00ff;	$a^=($t<< 8); $b^=$t;	$t=(($b>> 2)^$a)&0x33333333;	$b^=($t<< 2); $a^=$t;	$t=(($a>>16)^$b)&0x0000ffff;	$a^=($t<<16); $b^=$t;	$t=(($b>> 4)^$a)&0x0f0f0f0f;	$b^=($t<< 4); $a^=$t;	$a&=0xffffffff;	$b&=0xffffffff;	}sub main'des_ecb_encrypt	{	local(*ks,$encrypt,$in)=@_;	local($l,$r,$inc,$start,$end,$i,$t,$u,@input);		@input=unpack("C8",$in);	# Get the bytes in the order we want.	$l=	($input[0]    )|		($input[1]<< 8)|		($input[2]<<16)|		($input[3]<<24);	$r=	($input[4]    )|		($input[5]<< 8)|		($input[6]<<16)|		($input[7]<<24);	$l&=0xffffffff;	$r&=0xffffffff;	&doIP(*l,*r);	if ($encrypt)		{		for ($i=0; $i<32; $i+=4)			{			$t=(($r<<1)|($r>>31))&0xffffffff;			$u=$t^$ks[$i  ];			$t=$t^$ks[$i+1];			$t=(($t>>4)|($t<<28))&0xffffffff;			$l^=	$SP1[ $t     &0x3f]|				$SP3[($t>> 8)&0x3f]|				$SP5[($t>>16)&0x3f]|				$SP7[($t>>24)&0x3f]|				$SP0[ $u     &0x3f]|				$SP2[($u>> 8)&0x3f]|				$SP4[($u>>16)&0x3f]|				$SP6[($u>>24)&0x3f];			$t=(($l<<1)|($l>>31))&0xffffffff;			$u=$t^$ks[$i+2];			$t=$t^$ks[$i+3];			$t=(($t>>4)|($t<<28))&0xffffffff;			$r^=	$SP1[ $t     &0x3f]|				$SP3[($t>> 8)&0x3f]|				$SP5[($t>>16)&0x3f]|				$SP7[($t>>24)&0x3f]|				$SP0[ $u     &0x3f]|				$SP2[($u>> 8)&0x3f]|				$SP4[($u>>16)&0x3f]|				$SP6[($u>>24)&0x3f];			}		}	else			{		for ($i=30; $i>0; $i-=4)			{			$t=(($r<<1)|($r>>31))&0xffffffff;			$u=$t^$ks[$i  ];			$t=$t^$ks[$i+1];			$t=(($t>>4)|($t<<28))&0xffffffff;			$l^=	$SP1[ $t     &0x3f]|				$SP3[($t>> 8)&0x3f]|				$SP5[($t>>16)&0x3f]|				$SP7[($t>>24)&0x3f]|				$SP0[ $u     &0x3f]|				$SP2[($u>> 8)&0x3f]|				$SP4[($u>>16)&0x3f]|				$SP6[($u>>24)&0x3f];			$t=(($l<<1)|($l>>31))&0xffffffff;			$u=$t^$ks[$i-2];			$t=$t^$ks[$i-1];			$t=(($t>>4)|($t<<28))&0xffffffff;			$r^=	$SP1[ $t     &0x3f]|				$SP3[($t>> 8)&0x3f]|				$SP5[($t>>16)&0x3f]|				$SP7[($t>>24)&0x3f]|				$SP0[ $u     &0x3f]|				$SP2[($u>> 8)&0x3f]|				$SP4[($u>>16)&0x3f]|				$SP6[($u>>24)&0x3f];			}		}	&doFP(*l,*r);	pack("C8",$l&0xff,$l>>8,$l>>16,$l>>24,		  $r&0xff,$r>>8,$r>>16,$r>>24);	}

⌨️ 快捷键说明

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