我试图在PHP中执行某种XOR二进制加密算法,因此我需要将大字符串转换为二进制。问题是,PHP在二进制计算/存储方面似乎非常有限,因为只有六个字母的字符串,一旦转换,就会超过PHP INT限制。
这意味着将一个大字符串解包为二进制只会得到一个不可用的数字。我试图通过将字符串拆分成4个字母的包来进行字符串解包,然后将其解包,但在重新打包时遇到了问题,因为它会给出随机字符,而不是原始字符。
我该如何解包很长的字符串,然后将其存储在字符串(仅由0和1组成)或大数组中(其中每个值要么是0,要么是1,表示该位位置的键)?
你试过GMP库吗?手册页 GMP
<?php $gmpValue1 = gmp_init("1562767628166296698262", 10); // note: using base 10 (decimal) $gmpValue2 = gmp_init("2163623626362663286446", 10); $gmpValue3 = gmp_xor($gmpValue1, $gmpValue2); echo gmp_strval($gmpValue3, 10) . "\n"; // note: using base 10 (decimal)