我正在构建一个带有源系统的系统,我在’网上提供可用于虚拟宠物的网络.该系统将主要由儿童拥有.由于我希望它可用于绝对的初学者程序员,因此我的系统存在一些复杂性限制:它不能使用通常不附带
PHP的库,也不能触及数据库或写入其他永久存储器.
当每只宠物被采用时,访客将随机获得该宠物的一系列略有不同的变体之一.变化最初看起来是一样的,但随着时间的推移长大成为不同的宠物.访问者将获得HTML的简短代码,链接到他们宠物的图像.由于服务器端没有永久存储空间,因此用户的图像链接必须包含所有信息,以确定他们最终得到的宠物变体.
目前,URL只包含宠物的ID和用户获得的变体的ID.这样做的问题在于,通过将代码相互比较,用户可以找出他们中的哪些人最终得到相同的变化.由于某些变化比其他变种更少,因此用户可以在差异甚至在视觉上明显之前轻松发现罕见的变化.
我想要的是URL中的详细信息的加密系统.隐藏变体ID的东西,以便每个用户获得具有高概率的不同URL.我想过使用变量ID(3或4位)作为大随机数的低位或高位,但是用户会在其中发现模式.理想情况下,加密系统将进行参数化,以便我的系统的每个安装都使用稍微不同的加密.
PHP的mcrypt库可能会有一些有用的东西,但在主机之间似乎并不常见.
我可以在这里使用简单的,参数化的混淆/加密吗?
如果您期望相对较低的复杂程度,那么您可以进行非常简单的“xor”加密,并将密钥“存储”为URL的一部分.然后你可以使用PHP的rand()或/ dev / random或其他任何东西来生成密钥.
原文链接:https://www.f2er.com/php/138413.html低级别的用户不会轻易发现他们需要做的只是他们的宠物ID的下半部分和上半部分,以获得可以与他们的朋友比较的值.我猜大多数能够认识到这一点的人都不会花时间去弄明白,而且那些人无论如何都不在你的目标受众之外.
编辑:如果不明显,我说你给每个宠物一个不同的钥匙(因为给同一个不会解决你的问题).因此,如果宠物变异(petvar)是16位数,则生成16位随机数(rnd),然后执行此操作:petvar =(petvar ^ rnd)<< 16 | RND;然后你可以反转那个操作来提取rnd然后是petvar ^ rnd,然后再次xor再次得到原始的petvar.