我正在处理非常大的数字。我的算法之一要求数字'x'小于另一个数'n',以便执行该算法。我想知道是否有可能加密非常大的数字以产生一个较小的数字并存储密钥,以便何时我需要将数字反转为更大的数字?我看过mcrypt,但是没有输出所有数字,从我看到它输出一个字符串。
答案 0 :(得分:1)
你所说的是“压缩”,而不是“加密”。
如果有的话,加密可能会产生比其输入更大的更大的字符串。虽然您可以压缩这个数字,但这将是非常轻微的节省。
根据可能值的范围,您可以简单地构建一个包含每个可能的大数字的数组,并使用数组索引而不是数字本身。
答案 1 :(得分:0)
您可以将数字转换为更高的数字,以用较少的字符表示。例如,如果您的数字是基数10,则将其转换为基数16.您可以使用GMP库对这些数字进行数学计算,而不是基数为10。
您可以在此处阅读GMP(Gnu多精度)库:http://www.php.net/manual/en/book.gmp.php