如何将时间转换为编码/加密字符串,如PHP中的G7C



我有一个非常不同的问题,我们想要转换php strtotime("now"(;转换为类似"G7C5w3hJ9nR+uI0i/Awi1Auz/nw+Eu"的编码或加密形式和这个一样,没有什么不同。我有代码来解码这个编码或加密的字符串。以下是代码:

$lol = "G7C5w3hJ9nR+uI0i/Awi1Auz/nw+Eu";
$lol = trim($lol);

$default = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
$custom = "BSeI0grQ9Cmt/1oduh8AsF23wvZjpfGENx+n5JPMRYLDWqlVXy7zTHicO4UkKba6";

$lolec = base64_decode(strtr($lol, $custom, $default));

$lol = json_decode($lolec, true);
$date=@date_create($lol["date"]);
print_r( $date );

它会给你这个输出:-

DateTime Object ( [date] => 2021-03-25 06:38:46.000000 [timezone_type] => 1 [timezone] => +00:00 )

在这里,你可以看到我们已经解码了该字符串,我们得到了日期2021-03-25 06:38:46.00000

但问题是这个字符串"G7C5w3hJ9nR+uI0i/Awi1Auz/nw+Eu"是如何编码或加密的?我们怎么能把绳子做成这样?我还有一些类似的字符串,都是相似的,只是更改了一些中间字符,下面是:

G7C5w3hJ9nR+uI0i/AuToIpi/Aw+Eu
it will give you date 2021-02-28 04:46:56.000000

您可以看到这两个字符串中没有任何变化,只是中间的chracter发生了变化。我们希望在php或golang中生成类似这样的字符串。有人能帮忙吗?

您可以使用完全相反的过程:

$default = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
$custom  = "BSeI0grQ9Cmt/1oduh8AsF23wvZjpfGENx+n5JPMRYLDWqlVXy7zTHicO4UkKba6";
$json = '{"date":"@1616654326"}';
$json64 = base64_encode($json);
$encoded = strtr($json64, $default, $custom);
$encoded = rtrim($encoded, '=');
var_dump($encoded); // string(30) "G7C5w3hJ9nR+uI0i/Awi1Auz/nw+Eu"

对于给定的时间戳:

$timestamp = '1614487616';
$array = ['date' => '@' . $timestamp];
$json = json_encode($array);
$json64 = base64_encode($json);
$encoded = strtr($json64, $default, $custom);
$encoded = rtrim($encoded, '=');
var_dump($encoded); // string(30) "G7C5w3hJ9nR+uI0i/AuToIpi/Aw+Eu"

相关内容

  • 没有找到相关文章

最新更新