【发布时间】:2015-06-25 11:36:51
【问题描述】:
我正在使用 php 从证书中提取信息,虽然数据返回正常,但有一个特定值“SerialNumber”以似乎不同的数字格式返回,不确定它是什么..
例如,我期望收到的实际格式是:
58 ce a5 e3 63 51 b9 1f 49 e4 7a 20 ce ff 25 0f
但是,我实际上得到的是:
118045041395046077749311747456482878735
这是我执行查找的 php:
$serial = $cert['tbsCertificate']['serialNumber'];
我尝试了几种不同的转换,但都没有以预期的格式返回。
典型证书序列号字段的示例..
VAR 转储
["version"]=>
string(2) "v3"
["serialNumber"]=>
object(Math_BigInteger)#5 (6) {
["value"]=>
string(39) "118045041395046077749311747456482878735"
["is_negative"]=>
bool(false)
["generator"]=>
string(7) "mt_rand"
["precision"]=>
int(-1)
["bitmask"]=>
bool(false)
["hex"]=>
NULL
【问题讨论】:
-
你是如何从证书中提取信息的?
-
嗨,Barmer,我在这里使用 phpseclib.. 示例 link,只需点击解码并展开树以获取序列号
-
我还更新了我的帖子,添加了一个屏幕截图,向您展示典型序列号的样子
-
您只返回数字值,但您需要一个字母数字返回。您是否尝试过字符串转换结果?试试
$serial = (string) $cert['tbsCertificate']['serialNumber'];但这可能不会做任何事情,因为我们看不到最初设置$cert['tbsCertificate']及其子键值的代码,我认为这肯定是真正的问题所在。 -
是的,没有区别。我什至尝试了 bin2hex() strval() 和其他一些但没有乐趣
标签: php hex decimal bigdecimal phpseclib