我正在尽力破译一些Perl代码并将其转换为C#代码,以便我可以将它与更大的程序一起使用.我已经能够将其中的大部分转换,但是使用以下方法时出现问题:
sub dynk {
my ($t, $s, $v, $r) = (unpack("b*", $_[0]), unpack("b*", pack("v",$_[1])));
$v^=$t=substr($t,$r=$_*$_[($_[1]>>$_-1&1)+2]).substr($t,0,$r)^$s for (1..16);
pack("b*", $v);
}
Run Code Online (Sandbox Code Playgroud)
它被称为:
$sid = 0;
$rand = pack("H*", 'feedfacedeadbeef1111222233334444');
$skey = dynk($rand, $sid, 2, 3) ^ dynk(substr($dbuf, 0, 16), $sid, -1, -4);
Run Code Online (Sandbox Code Playgroud)
除了这一部分,我理解其中的大部分内容:
$_*$_[($_[1]>>$_-1&1)+2]
我不确定在这种情况下如何使用$ _?如果有人可以解释,我想我可以得到其余的.
perl ×1