代码之家  ›  专栏  ›  技术社区  ›  Rackover

超过PHP二进制限制

  •  -2
  • Rackover  · 技术社区  · 7 年前

    我试图在PHP中执行某种XOR二进制加密算法,因此我需要将大字符串转换为二进制。问题是,PHP在二进制计算/存储方面似乎非常有限,因为只有六个字母的字符串,一旦转换,就会超过PHP INT限制。

    这意味着将一个大字符串解包为二进制只会得到一个不可用的数字。我试图通过将字符串拆分成4个字母的包来进行字符串解包,然后将其解包,但在重新打包时遇到了问题,因为它会给出随机字符,而不是原始字符。

    我该如何解包很长的字符串,然后将其存储在字符串(仅由0和1组成)或大数组中(其中每个值要么是0,要么是1,表示该位位置的键)?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Wee Zel    7 年前

    你试过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)