MATH_BIGINTEGER_MODE_GMP中的phpseclib ASN1 biginteger与标准实现不兼容吗?

时间:2016-12-14 16:04:49

标签: php biginteger phpseclib asn.1

我正在使用phpseclib来解析Apple应用程序清单(用于应用程序内购买)。 我可以在c#中用Liping Dai的ASN1库解析它,并按预期进行解析。 此外,我有两个虚拟主机,“A”与PHP 5.4.45和OpenSSL 1.0.1p 2015年7月9日和“B”与PHP 5.5.27 OpenSSL 1.0.1e-fips 2013年2月11日。

不确定应该责备什么,但是在主机“A”上,phpseclib / ASN1按预期从字节字符串中解析清单,而在新的“B”主机上我遇到了奇怪的问题。使用MATH_BIGINTEGER_MODE_GMP模式(phpseclib / Math / BigInteger.php)将所有BIGINT(type = integer)值解析为Math_Bigint。我在c#和php中进行了模拟调试,发现虽然结构正确,但int值是错误的 - 有一些资源值,它们给出了错误的int值。

我通过在phpseclib / Math / BigInteger.php :: Math_BigInteger构造函数中注释MATH_BIGINTEGER_MODE_GMP来解决它,从而将其切换到MATH_BIGINTEGER_MODE_BCMATH模式。现在它就像主机“A”一样工作。但这看起来像魔术,我讨厌代码中的魔法。有人碰到了这个吗?

0 个答案:

没有答案