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(可能与其名称结合)产生的字母和数字的密钥,解码后给我回复身份证.
我发现的所有不同编码方法也可以包含特殊字符.
这里有什么帮助?
提前致谢
这个答案并不真正应用加密,但因为您的问题也被标记为编码...
从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)