但是,我试图在显示 755 之前对其进行加密,然后在检查该值之前对其进行解码。所以我没有显示实际的 id 而是一个面具。
这似乎是一个非常麻烦的想法。但是,如果它对您和安全意味着什么,那么您需要设计一个适合您的编码/解码方案。在最简单的级别上,您也许可以base64_encode
使用 id 然后对其进行解码base64_decode
。下面的例子只是说明性的。请根据您的需要进行清洁和调整。
$encrypted_id = base64_encode($id);
现在要取回它,只需运行base64_decode
:
$decrypted_id = base64_decode($encrypted_id);
但这很容易破解。
更好的方法可能是创建一些秘密“盐”来添加到只有您的系统知道或理解的 ID。
$salt="MY_SECRET_STUFF";
$encrypted_id = base64_encode($id . $salt);
这样,如果解码不考虑盐,简单地使用base64_decode
是没有意义的:$id
$decrypted_id = base64_decode($encrypted_id);
只有将您的盐计入解密过程中才能有效地对其进行解码:
$decrypted_id_raw = base64_decode($encrypted_id);
$decrypted_id = preg_replace(sprintf('/%s/', $salt), '', $decrypted_id_raw);
逻辑是原始的解密 ID 仍然混合了盐,并且preg_replace
会将其去除。既然只有你知道“盐”,你猜怎么着?你是安全的!但是当然,如果你因为某种原因失去了盐分,你的整个系统就毫无用处了,因为谁知道你的 id 呢。
但同样,除非保护用户 ID 是您的应用程序的目标并且对安全性真正至关重要,否则这似乎太过分了。如果有人猜出一个 ID,最坏的情况是什么?以及如何针对“最坏”情况进行编程。