我正在尽我最大的努力破译一些 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);
}
它被称为:
$sid = 0;
$rand = pack("H*", 'feedfacedeadbeef1111222233334444');
$skey = dynk($rand, $sid, 2, 3) ^ dynk(substr($dbuf, 0, 16), $sid, -1, -4);
除了本节之外,我了解大部分内容:
$_*$_[($_[1]>>$_-1&1)+2]
我不确定在这种情况下如何使用 $_ ?如果有人可以解释这一点,我想我可以得到其余的。