我有一些实体(对象),每个实体都有一个id(唯一)和一个名字.
当我想显示其中一个时,我有一个网址,如www.domain.com/view/key:xxx.
关键是使用base64_encode编码的实体的id,因此从url的id不是直截了当的.
我现在要做的是(由于项目规范),密钥只包含数字和字母(base64_encode提供的结果如eyJpZCI6IjM2In0 =或eyJpZCI6IjM2In0 =在url编码后).
有一个简单的替代品吗?这不是一个高安全性的问题 – 有很多方法可以显示id – 我只需要一个只包含由实体ID(可能与其名称结合)产生的字母和数字的密钥,解码后给我回复身份证.
我发现的所有不同编码方法也可以包含特殊字符.
这里有什么帮助?
提前致谢
解决方法:
这个答案并不真正应用加密,但因为您的问题也被标记为编码…
从PHP 5开始,您可以使用bin2hex:
$s = base64_decode('eyJpZCI6IjM2In0=');
echo bin2hex($s);
输出:
7b226964223a223336227d
要解码:
$s = hex2bin($data);
要么:
$s = pack('H*', $data);
顺便说一句,如果id是敏感的,你可能会考虑将它作为完全加密的替代方法进行防篡改.
忘了提及如何使base64编码数据URL安全:
function base64_url_encode($input)
{
return strtr(base64_encode($input), '+/=', '-_,');
}
function base64_url_decode($input)
{
return base64_decode(strtr($input, '-_,', '+/='));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。