4

いくつかのエンティティ (オブジェクト) があり、それぞれに ID (一意) と名前があります。
これらのいずれかを表示したい場合、www.domain.com/view/key:xxx のような URL があります。
キーは、base64_encode でエンコードされたエンティティの ID にすぎないため、URL から ID が何であるかは簡単ではありません。

私が今やろうとしているのは(プロジェクトの仕様により)、キーに数字と文字のみを含めることです(base64_encodeはurlエンコードのような結果を提供します)eyJpZCI6IjM2In0=eyJpZCI6IjM2In0%3D

これに代わる簡単な方法はありますか?これは高度なセキュリティの問題ではありません.IDを明らかにする方法はたくさんあります.デコードして ID を返します。

私が見つけたすべての異なるエンコード方法には、特殊文字も含めることができます。
ここで何か助けはありますか?
前もって感謝します

4

2 に答える 2

7

この回答は実際には暗号化を適用しませんが、質問にはエンコーディングもタグ付けされているため...

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, '-_,', '+/='));
}
于 2012-06-09T14:48:41.487 に答える
0

多くの PHP エンコード/デコード関数があります。ここここでたくさん見つけることができます。

または、base64_encode の末尾にある = を取り除き、base64_decode の PHP コードに追加して ID を見つけます。

于 2012-06-09T14:46:31.797 に答える