gpt4 book ai didi

php - PHP中的简单加密

转载 作者:可可西里 更新时间:2023-11-01 12:24:36 24 4
gpt4 key购买 nike

我正在构建一个带源代码的系统,我在网上发布该系统以提供可领养的虚拟宠物。该系统将主要由 children 拥有。因为我希望它对绝对初学者程序员可用,所以我的系统有几个复杂性限制:它不能使用 PHP 通常不附带的库,它不能接触数据库或写入其他永久存储.

当每只宠物被领养时,访客将随机获得该宠物一系列略有不同的变体之一。这些变体最初看起来是一样的,但随着时间的推移会长大成为不同的宠物。访问者将获得一个 HTML 格式的短代码,该代码链接到他们宠物的图像。由于服务器端没有可用的永久存储空间,因此用户的图像链接必须包含所有信息以确定他们最终获得的宠物变体。

目前,该 URL 仅包含宠物 ID 和用户获得的变体 ID。这样做的问题是,通过相互比较代码,用户可以找出他们中谁最终得到了相同的变体。由于某些变体比其他变体更为罕见,因此用户可以在差异甚至在视觉上显而易见之前就轻松发现这些罕见变体。

我想要的是一个用于 URL 中详细信息的加密系统。隐藏变体 ID 的东西,以便每个用户很可能获得不同的 URL。我想使用变体 ID(3 或 4 位)作为一个大随机数的低位或高位,但用户会发现其中的模式。理想情况下,加密系统将被参数化,以便我的系统的每次安装都使用略有不同的加密。

PHP 的 mcrypt 库中可能包含一些有用的东西,但它在托管商中似乎并不常见。

我可以在这里使用简单的、参数化的混淆/加密吗?

最佳答案

您正在寻找“一次性填充”加密。它需要一个 key 并对字符进行模数加法以创建加密字符串。

function ecrypt($str){
$key = "abc123 as long as you want bla bla bla";
for($i=0; $i<strlen($str); $i++) {
$char = substr($str, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return urlencode(base64_encode($result));
}


function decrypt($str){
$str = base64_decode(urldecode($str));
$result = '';
$key = "must be same key as in encrypt";
for($i=0; $i<strlen($str); $i++) {
$char = substr($str, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)-ord($keychar));
$result.=$char;
}
return $result;
}

这就是简单的字符串加密。我要做的是序列化用户参数数组并将其作为链接中的变量传递:

$arr = array(
'pet_name'=>"fido",
'favorite_food'=>"cat poop",
'unique_id'=>3848908043
);
$param_string = encrypt(serialize($arr));

$link = "/load_pet.php?params=$param_string";

在 load_pet.php 中你应该做相反的事情:

$param_string = $_GET["params"];
$params = unserialize(decrypt($param_string));

砰。

关于php - PHP中的简单加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/327097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com