php编码字符串,反之亦然

CdB*_*CdB 5 php encryption encode

我有一些实体(对象),每个实体都有一个id(唯一)和一个名字.
当我想显示其中一个时,我有一个网址,如www.domain.com/view/key:xxx.
关键是使用base64_encode编码的实体的id,因此从url的id不是直截了当的.

我现在要做的是(由于项目规范),密钥只包含数字和字母(base64_encode提供类似eyJpZCI6IjM2In0=eyJpZCI6IjM2In0%3D在url编码后的结果).

有一个简单的替代品吗?这不是一个高安全性的问题 - 有很多方法可以显示id - 我只需要一个只包含由实体ID(可能与其名称结合)产生的字母和数字的密钥,解码后给我回复身份证.

我发现的所有不同编码方法也可以包含特殊字符.
这里有什么帮助?
提前致谢

Ja͢*_*͢ck 7

这个答案并不真正应用加密,但因为您的问题也被标记为编码...

从PHP 5开始,您可以使用bin2hex:

$s = base64_decode('eyJpZCI6IjM2In0=');
echo bin2hex($s);
Run Code Online (Sandbox Code Playgroud)

输出:

7b226964223a223336227d
Run Code Online (Sandbox Code Playgroud)

要解码:

$s = hex2bin($data);
Run Code Online (Sandbox Code Playgroud)

要么:

$s = pack('H*', $data);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果id敏感,你可能会考虑将它作为全面加密的替代方案进行防篡改.


忘了提及如何使base64编码数据URL安全:

function base64_url_encode($input)
{
    return strtr(base64_encode($input), '+/=', '-_,');
}

function base64_url_decode($input)
{
    return base64_decode(strtr($input, '-_,', '+/='));
}
Run Code Online (Sandbox Code Playgroud)