我必須從已離開公司的開發人員處調試舊的PHP腳本。我瞭解了大部分代碼,除了以下功能。我的問題:是什麼...這段代碼如何提取簽名?
如果($ SEQ == 0×03 || $ SEQ ==的0x30)
...意味着出X的提取簽名的情況下509證書?
public function extractSignature($certPemString) {
$bin = $this->ConvertPemToBinary($certPemString);
if(empty($certPemString) || empty($bin))
{
return false;
}
$bin = substr($bin,4);
while(strlen($bin) > 1)
{
$seq = ord($bin[0]);
if($seq == 0x03 || $seq == 0x30)
{
$len = ord($bin[1]);
$bytes = 0;
if ($len & 0x80)
{
$bytes = ($len & 0x0f);
$len = 0;
for ($i = 0; $i < $bytes; $i++)
{
$len = ($len << 8) | ord($bin[$i + 2]);
}
}
if($seq == 0x03)
{
return substr($bin,3 + $bytes, $len);
}
else
{
$bin = substr($bin,2 + $bytes + $len);
}
}
else
{
return false;
}
}
return false;
}
什麼問題?你在條件中有一個簡單的邏輯和。 – Pateman 2012-03-08 22:37:47
任何人都可以澄清一下'<<'比較運算符的作用嗎? – Josh 2012-03-08 22:39:40
您瞭解腳本其餘部分發生的按位操作,但您不明白相等嗎? – Crashspeeder 2012-03-08 22:41:12