PHP编码到64字符长度
答
您可以使用str_pad()
功能与BASE64_ENCODE的字符串一起:
http://php.net/manual/en/function.str-pad.php
该函数返回的输入字符串填充左,右,或双方指定的填充长度。如果未提供可选参数pad_string,则会用空格填充输入,否则将使用pad_string中的字符填充至极限。
例子:
$string = urlencode(base64_encode($string));
$padded = str_pad($tstamp."_".$string."_", 64, "0");
您的网址,然后可以像:
/order/timestamp_base64string_00000..../
每个_
分离得到你所需要的URL的一部分,你将不得不urldecode()
然后base64_decode()
的字符串。
我建议你更愿意使用会话(cookie)来维护这些信息从一个页面到另一个页面,或者使用一个可以在URL中使用ID的中间存储系统。
你打算以后再解码吗,还是你真的认为是哈希? 64个字符有特殊含义还是只是一个任意数字? –
它应该是一个漂亮的网址(example/order/xyz)。 xyz应该总是一个64个字符的字符串,我当然会稍后编码它来检索顺序。 – seikzer
我不确定你可以加密一个字符串到正好64个字符(或为什么正好有64个字符是重要的)。尝试使用一些常见的加密方法,只是追加或附加缺少的字符数量。 –