编码/将大整数压缩为字母数字值

Roa*_*ock 4 php encoding

我有一个非常大的12-14位整数,我想将其加密/压缩为一个字母数字值,以便稍后可以从字母数字值恢复整数.我尝试使用62 base转换此整数并尝试将这些值映射到a-zA-Z0-9,但是由此生成的值是7个字符长.这个长度仍然足够长,我想转换为大约4-5个字符.

是否有一般方法来执行此操作或某些方法可以这样做,以便仍然可以恢复整数?我在这里问数学方面,但我会用PHP编程,最近我开始用php编程.

编辑:

我正在考虑分配一个掩码位并以一种方式使用它来生成更少数量的Chars.我知道范围是不够的,这就是我专注于使用数学技巧或表达方式的原因.62基地是我已经应用但尚未解决的想法.

dec*_*eze 5

14位十进制数字可表示100,000,000,000,000个值(10 14).
62个字符的5个字符可以表示916,132,832个值(62 5).

您不能将14位数字的等效数量的值填充到5个字符的基本62字符串中.根本不可能唯一地表达每个可能的值.见http://en.wikipedia.org/wiki/Pigeonhole_principle.即使是具有7个字符的base 64也是不够的(仅有4,398,046,511,104个可能的值).事实上,如果你的目标是一个5个字符的短字符串,你需要使用一个基本的631字母表进行补偿(631 5 = 100,033,806,792,151).

即使压缩也无济于事.这意味着两个或更多数字需要压缩到相同的压缩字符串(因为没有足够的可能唯一压缩值),这在逻辑上意味着不可能将它们解压缩为两个不同的值.

为了简单地说明这一点:说我的字母和目标"字符串长度"由一位组成.那一点可以是01.它可以表达2个唯一可能的值.假设我有一个压缩算法,可以将任何内容和所有内容压缩到这一位....我怎么可能用两个可能的值从那一位解压缩100,000,000,000,000个唯一值?如果您解决了这个问题,带宽和存储问题会立即消失,您将成为亿万富翁.