php编码字符串,反之亦然

时间:2012-06-09 14:43:19

标签: php encryption encode

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

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

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

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

2 个答案:

答案 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)

有许多PHP编码/解码功能。 您可以找到很多herehere

或者只是删除base64_encode末尾的=并将其添加到base64_decode的PHP代码中以查找ID。