我需要为一个S3 URL编写一个URL的64位编码。
我留下了类似的东西:
http://d111111abcdef8.cloudfront.net/image.jpg?color=red&size=medium
&Expires=1357034400
&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu- 5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6
&Key-Pair-Id=APKA9ONS7QCOWEXAMPL
如您所见,签名和密钥对ID已编码。
我需要将上述URL用作另一个URL中的参数。
我有base64编码(为了掩盖域名,使其更漂亮),然后对此进行URL编码。
我的问题是,在某些params base 64编码后,再对64进行编码整个字符串,在解码时,签名和密钥对ID等原始参数是否可读?
答案 0 :(得分:1)
简单的问题,简单的回答:是的。
答案 1 :(得分:0)
如果您打算这样做,则需要使用“&”而不是“&”在您编码的字符串中。此外,base64_decoding整个编码字符串,只会解码最后一次编码。
一个例子:
$string1 = "This is a string";
$string2 = "This is another String";
$string1 = base64_encode( $string1 );
$string2 = base64_encode( $string2 );
echo $string1 . "<br />";
echo $string2 . "<br />";
$entity = "HTTP://www.google.com/?param1=" . $string1 . "&param2=" . $string2;
$encoded_entity = base64_encode( $entity );
echo $encoded_entity . "<br />";
$decoded_entity = base64_decode( $encoded_entity );
echo $decoded_entity . "<br />";
这将输出:
VGhpcyBpcyBhIHN0cmluZw==
VGhpcyBpcyBhbm90aGVyIFN0cmluZw==
SFRUUDovL3d3dy5nb29nbGUuY29tLz9wYXJhbTE9VkdocGN5QnBjeUJoSUhOMGNtbHVadz09JmFtcDtwYXJhbTI9VkdocGN5QnBjeUJoYm05MGFHVnlJRk4wY21sdVp3PT0=
HTTP://www.google.com/?param1=VGhpcyBpcyBhIHN0cmluZw==¶m2=VGhpcyBpcyBhbm90aGVyIFN0cmluZw==
正如您所看到的,您可以解码整个字符串,但只会解码您编码的字符串。并非所有编码字符串的级别。为此,您首先必须解码字符串,然后解码参数。