PHP 加密一个非常大的数字以产生一个较小的数字



我正在处理非常大的数字。我的一个算法要求数字"x"小于另一个数字"n",以便执行该算法。我想知道是否可以加密非常大的数字以产生较小的数字并存储密钥,以便在我需要将数字折回较大的数字时存储?我看过 mcrypt,但这并没有输出所有数字,从我所看到的它输出一个字符串。

你所说的叫做"压缩",而不是"加密"。

如果有的话,加密可能会产生比其输入更大的字符串。虽然您可以压缩数字,但这将非常节省。

根据可能值的范围,您可以简单地构建每个可能的大数字的数组,并使用数组索引而不是数字本身。

您可以将数字转换为更高的基数,以用更少的字符表示它。例如,如果您的数字以 10 为基数,请将其转换为以 16 为基数。您可以使用 GMP 库对这些不是以 10 为基数的数字进行高精度数学运算。

您可以在此处阅读有关GMP(Gnu Multiple Precision)库的信息:http://www.php.net/manual/en/book.gmp.php

最新更新