0
在爲PHP's OpenSSL functions補充意見有這個片段pem2der和der2pem爲什麼不相反?
function pem2der($pem_data) {
$begin = "CERTIFICATE-----";
$end = "-----END";
$pem_data = substr($pem_data, strpos($pem_data, $begin)+strlen($begin));
$pem_data = substr($pem_data, 0, strpos($pem_data, $end));
$der = base64_decode($pem_data);
return $der;
}
function der2pem($der_data) {
$pem = chunk_split(base64_encode($der_data), 64, "\n");
$pem = "-----BEGIN CERTIFICATE-----\n".$pem."-----END CERTIFICATE-----\n";
return $pem;
}
這些功能都沒有逆。我的測試代碼:
$priv_key = ...;
print $priv; // dev data, of course
print der2pem (pem2der ($priv));
打印
-----BEGIN PRIVATE KEY-----
MIIJQwIBADANBgkqhkiG9w0BAQEFAAS... (etc)
然後
-----BEGIN CERTIFICATE-----
TEKEYMIIJQwIBADANBgkqhkiG9w0BAQEFA... (etc)
注意第二個有一個TEKEY
前綴。在十六進制這是4c4284
這看起來並不重要。
這是從哪裏來的?
這不是官方的PHP代碼。如果你不喜歡它,也許寫你自己的?我敢打賭,無論如何,你現在要做的是更好的支持 – Machavity