我有一些实体(对象),每个实体都有一个id(唯一)和一个名字 当我想显示其中一个时,我有一个网址,如www.domain.com/view/key:xxx 关键是使用base64_encode编码的实体的id,因此从url的id不是直截了当的。
我现在要做的是(由于项目规范),密钥只包含数字和字母(base64_encode在url编码后提供eyJpZCI6IjM2In0=
或eyJpZCI6IjM2In0%3D
之类的结果。 / p>
有一个简单的替代方案吗?这不是一个高安全性的问题 - 有很多方法可以显示id - 我只需要一个只包含由实体ID(可能与其名称结合)产生的字母和数字的密钥,解码后给我回复身份证。
我发现的所有不同的编码方法也可以包含特殊字符
有什么帮助吗?
提前致谢
答案 0 :(得分:7)
这个答案并不真正适用加密,但由于你的问题也被标记为编码......
从PHP 5开始,您可以使用bin2hex
:
$s = base64_decode('eyJpZCI6IjM2In0=');
echo bin2hex($s);
输出:
7b226964223a223336227d
解码:
$s = hex2bin($data);
或者:
$s = pack('H*', $data);
顺便说一句,如果id
敏感,您可能需要考虑将其篡改,以替代全面加密。
忘了提及如何使base64
编码数据网址安全:
function base64_url_encode($input)
{
return strtr(base64_encode($input), '+/=', '-_,');
}
function base64_url_decode($input)
{
return base64_decode(strtr($input, '-_,', '+/='));
}
答案 1 :(得分:0)